为什么Python 2.7比3.2更快?

时间:2014-05-02 11:12:02

标签: python python-2.7 python-3.x

我编写了以下程序作为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 个答案:

答案 0 :(得分:3)

除了更精确的计时,Martijn Pieters建议,其中一个原因可能是简陋的/,其definition changed在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__语句重新尝试时间。

答案 1 :(得分:2)

Python3 int类型以前是Python2 long类型。多头比整数慢。 Python针对简单而非速度进行了优化。