Python3 的循环比 Python2 慢得多。

我的项目涉及大量的股票循环和统计计算。它是用Python3编写的。随着数据变得更大,我感觉脚本的性能相当慢。我尝试了Lua,因为它以速度著称,并尝试进行了一些测试,如下所示,并与Python2作为基准进行了比较。

只有一个简单的循环测试代码:

Lua版本

for i=1,100,1 do
    for j=1,100,1 do
        print(i*j)
    end
end

Python版本

for i in range(1,101):
    for j in range(1,101):
        print(i*j)

结果如下(尝试了几次,选择了每组最佳结果):

lua5.2.3:0.461秒

Python2.7.6:0.429秒

Python3.4:0.85秒

令我惊讶的是,Python2大约比Python3快2倍。

为什么?即使只有一个简单的循环?

我认为Python3是Python的未来,因此我从一开始就学习了Python3。

我真的需要将我的代码迁回Python2吗?或者在Python3中有什么调整可以增强其循环性能?

点赞
用户2779972
用户2779972

我已经增加了你的循环并禁用了输出(当它被显示时速度会慢得多)。

而我不是Python专家。但你可以通过jit编译器pypy来加速你的Python代码,例如(但仍然比luajit慢)。

此外,这个关于Python3和Python2的话题可能对你也很有趣。

python

r=0
for i in range(1,10000):
    for j in range(1,10000):
        r=i*j

python3

$ time python3 loop.py

real    0m16.612s
user    0m16.610s
sys 0m0.000s

python2

$ time python2 loop.py

real    0m11.218s
user    0m11.190s
sys 0m0.007s

pypy

$ time pypy loop.py

real    0m0.923s
user    0m0.900s
sys 0m0.020s

lua

local r=0
for i=1,10000,1 do
    for j=1,10000,1 do
        r=i*j
    end
end

lua 5.2.3

$ time lua loop.lua

real    0m1.123s
user    0m1.120s
sys 0m0.000s

luajit

$ time luajit loop.lua

real    0m0.074s
user    0m0.073s
sys 0m0.000s
2014-09-07 18:13:48