我编写了这个快速测试脚本来检查,但我现在只能访问pythonanywhere上的bash控制台,而且我没有得到一致的时间。
def a():
x = 0
for i in xrange(1000):
if i%2==0 and i%3==0:
x += 3
elif i%2==0 or i%3==0:
x += 2
else:
x += 1
def b():
x = 0
for i in xrange(1000):
x += 3 if i%2==0 and i%3==0 else (2 if i%2==0 or i%3==0 else 1)
if __name__=="__main__":
import cProfile
cProfile.run("for i in xrange(1000): a()")
cProfile.run("for i in xrange(1000): b()")
我正在寻求加速一些代码,我想知道这两种不同的方法之间是否有很大的速度差异。
答案 0 :(得分:1)
就像@Pavel Anossov所说,a更快:
import timeit
def a():
x = 0
for i in xrange(1000):
if i%2==0 and i%3==0:
x += 3
elif i%2==0 or i%3==0:
x += 2
else:
x += 1
def b():
x = 0
for i in xrange(1000):
x += 3 if i%2==0 and i%3==0 else (2 if i%2==0 or i%3==0 else 1)
test_a = timeit.Timer(a)
test_b = timeit.Timer(b)
print min(test_a.repeat(3, 1000))
print min(test_b.repeat(3, 1000))
输出
0.573258876801
0.591067075729
当我们将 xrange 替换为范围(xrange在3.x中消失)时,差异几乎没有,就像其他人所说的那样。我已经在2.6
上测试了它Adequatly:
0.597590923309
0.598859071732