【发布时间】:2018-11-12 13:42:09
【问题描述】:
我一直认为 for 循环比 while 循环运行得更快。但是,我最近刚刚测试了速度,无法弄清楚为什么 while 循环的运行速度要快 5 到 6 倍。这是我写的测试代码。
test1 = datetime.now()
ll = 100000
for kk in range(10000000):
pass
print('Time for 100000 runs is ({}s)'.format(datetime.now() - test1))
test2 = datetime.now()
ll = 10000000
while ll > 0:
ll = ll -11
print('Time for 100000 runs is ({}s)'.format(datetime.now() - test2))
运行此测试后,我发现 for 循环运行大约 1.26 秒,while 循环运行大约 0.22 秒。如果 for 循环更快,为什么我不总是以这种方式人为地将 for 循环转换为 while 循环?
谢谢!
编辑:在人们指出我的错字后,并使用@RPGillespie 的建议将范围(10000000)移出时间之前,我得到了符合我预期的结果。也就是说,for 循环比 while 循环快三倍左右。
【问题讨论】:
-
在你的 while 循环中,你减去 11,所以你的 while 循环比你的 for 循环经历更少的迭代。
-
您在 while 循环中从
ll变量中减去 11。 -
一个原因可能是您的 while 循环只运行了 for 循环迭代次数的 1/10,除非这是一个错字。
-
range(10000000)是一个函数调用,它(取决于你的 python 版本)会生成一个巨大的列表,所以你的 while 循环不会立即处理时间损失。 -
运行 10M 迭代并报告 100k 迭代也无济于事......
标签: python performance