为什么Python 2.7比3.2快?

2 投票
2 回答
528 浏览
提问于 2025-04-18 05:07

我写了一个程序来解决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__这个语句重新进行测试。

撰写回答