为什么Python 2.7比3.2快?
我写了一个程序来解决Project Euler的第12个问题,但在Python 2.7中运行需要6.62秒,而在Python 3.2中却需要10.21秒。按理说,后面的版本应该更快才对!
import time
def mainrun():
start = time.time()
divnum = 0
i = 0
trinum = 0
while divnum < 501:
i += 1
trinum += i
divnum = 0
#2nd arg outside - no diff to speed
for j in range(1, int(trinum**.5)+1):
if trinum % j == 0:
divnum += 1
if trinum / j != j:
divnum += 1
print(trinum, '\nDivisors:', divnum)
print('Solved in', round((time.time()-start),2), 'seconds.')
mainrun()
有没有人知道为什么新版的Python反而更慢呢?
2 个回答
2
在Python3中,int类型其实就是以前Python2中的long类型。long类型的运算速度比int类型慢。Python的设计更注重简单易用,而不是追求速度。
3
除了Martijn Pieters提到的更精确的计时外,还有一个原因可能跟简单的/
有关,它在不同的Python版本中有了不同的定义:
在Python 2.7中:
>>> 5/2
2
>>> from __future__ import division
>>> 5/2
2.5
在Python 3.0中:
>>> 5/2
2.5
>>> 5//2
2
如果你在Python 2中测试时间,可以试着使用from __future__
这个语句重新进行测试。