gpt4 book ai didi

python - python2 和 python3 之间的执行时间略有不同

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:35 25 4
gpt4 key购买 nike

最后,我在 python 中编写了一个简单的排列生成器(Knuth 在“The Art...4”中描述的“plain changes”算法的实现)。我很好奇它在 python2 和 python3 之间的执行时间差异。这是我的功能:

def perms(s):
s = tuple(s)
N = len(s)
if N <= 1:
yield s[:]
raise StopIteration()
for x in perms(s[1:]):
for i in range(0,N):
yield x[:i] + (s[0],) + x[i:]

在 python3 版本中,我只是将 print x 更改为 print(x),因为 print 是 py3 中的一个函数。我使用 timeit 模块对两者进行了测试。

我的测试:

$ echo "python2.6:" && ./testing.py && echo "python3:" && ./testing3.py

python 2.6:

args time[ms]
1 0.003811
2 0.008268
3 0.015907
4 0.042646
5 0.166755
6 0.908796
7 6.117996
8 48.346996
9 433.928967
10 4379.904032

python 3:

args time[ms]
1 0.00246778964996
2 0.00656183719635
3 0.01419159912
4 0.0406293644678
5 0.165960511097
6 0.923101452814
7 6.24257639835
8 53.0099868774
9 454.540967941
10 4585.83498001

如您所见,对于少于 6 个参数,python 3 速度更快,但角色相反,python2.6 表现更好。由于我是 python 编程的新手,我想知道为什么会这样?或者也许我的脚本针对 python2 进行了更优化?

预先感谢您的友好回答:)

最佳答案

Quoting :

The net result of the 3.0 generalizations is that Python 3.0 runs the pystone benchmark around 10% slower than Python 2.5. Most likely the biggest cause is the removal of special-casing for small integers. There’s room for improvement, but it will happen after 3.0 is released!

>>> 4585.83498001/4379.904032
1.0470172283468882

所以您看到大约 5% 的减速。引用的文字表示预计会放缓 10%。所以我会接受这是一个合理的放缓。

但是,可以看出,它一直在改进herehere .因此,如果您担心 5% 的减速,请尝试 3.1 或 3.2。

关于python - python2 和 python3 之间的执行时间略有不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com