不同之处在于int
类型的实现。蟒3.X使用任意大小的整数类型(long
在2.X)排他地,而在Python x为值高达sys.maxint
更简单的int
类型被用于使用一个简单的Clong
引擎盖下。
将循环限制为 long
整数后,Python 3.x会更快:
>>> from timeit import timeit
>>> MAX_NUM = 3*10**3
>>> def bar():
... i = MAX_NUM + sys.maxsize
... while i > sys.maxsize:
... i -= 1
...
Python 2:
>>> timeit(bar, number=10000)
5.704327821731567
Python 3:
>>> timeit(bar, number=10000)
3.7299320790334605
我用sys.maxsize
作为sys.maxint
从Python 3的下降,但整数值基本相同。
因此,Python 2中的速度差异仅限于第一个(2 31)-32位系统为1整数。