while的代码test1.py:
i = 0
while i < 10000000:
i += 1
for-loop的代码test2.py:
for n in range(0,10000000):
pass
time python test1.py 或者test2.py,得到第一个的时间大概是0m1.189s;第二个的时间是0m0.514s。while循环的时间大概是for-range的两倍。
其实如果对python字节码的反汇编可以看到两者所做的操作数量是不一样的,while要多于for-loop。另外,range()作为内置方法,是作为C代码执行的,而 i +=1需要解释,在效率和速度之间是差很多的。而且i += 1相当于创建了新对象,相对而言也会更慢。
网友评论