8–13. 程序执行性能. 在 8.5.2 节里, 我们介绍了两种基本的迭代序列方法: (1) 通过序列 项, 以及 (2) 通过序列索引遍历. 该小节的末尾我们指出后一种方法在序列很长的时候性能不佳. (在我的系统下, 性能差了将近两倍[83%]) 你认为它的原因是什么?
网上搜了好久也没有答案,就自己做了个实验:
#!/usr/bin/python
# -*- coding:utf-8 -*-
#Filename:8_13.py
import time
def compare():
strtime=time.clock()
alist=range(10000000)
for i in range(len(alist)):
pass
#print alist[i],
#for i in alist:
#pass
endtime=time.clock()
print "运行时间: ",(endtime-strtime)
compare()
window7系统结果如下:
序列遍历,运行时间: 0.569418727389
迭代遍历,运行时间: 0.339704447834
确实迭代遍历快了很多。
立刻想到,会不会range(len(alist))占用的时间太长了,
import time
def compare():
alist=range(10000000)
strtime = time.clock()
range(len(alist))
endtime = time.clock()
print "运行时间: ",(endtime-strtime)
compare()
运行时间: 0.24903010878
bingo!这就是答案!