我在优化一些 Python 代码,并尝试了以下实验:
import time
start = time.clock()
x = 0
for i in range(10000000):
x += 1
end = time.clock()
print '+=',end-start
start = time.clock()
x = 0
for i in range(10000000):
x -= -1
end = time.clock()
print '-=',end-start
第二个循环更可靠地更快,取决于我运行它的系统,速度从微不足道的到10%。我尝试了改变循环顺序、执行次数等方法,它似乎仍然有效。陌生人,
for i in range(10000000, 0, -1):
(倒序运行循环)比
更快for i in range(10000000):
即使循环内容相同,也会出现这种情况。有什么原因,这里还有更一般的编程教训吗?
xrange()
而不是range()
吗?这样Python就不必为一千万个整数分配空间。另外,你是在运行Python 2.x还是Python 3.x版本?它们的range()
实现方式有很大不同。 - Greg Hewgill