Python 3.x和Python 2.x的性能比较

24

仅就性能而言,Python 3与Python 2.x相比如何?


8
这个问题被提出两年后,我想知道答案是否仍然相同。 - ripper234
1
七年过去了,这个问题的答案仍然没有改变。 - Warren P
6个回答

29

官方基准测试显示,Python 3.0 的速度比 2.5 慢。引自《Python 3.0 新特性》:

Python 3.0 进行了普遍化的改进,其结果是在 pystone 基准测试中,Python 3.0 的运行速度比 Python 2.5 慢了大约10%。最有可能的原因是取消了对小整数的特殊处理。虽然还有提升空间,但这需要在 3.0 发布后才会进行。


1
这在2015年仍然普遍适用,如果涉及大量字符串操作的代码,Python 2.7通常比Python 3.5更快,截至2015年11月。 - Warren P

7

我认为任何差异都是微不足道的。例如,遍历列表将完全相同。

Python 3 的理念是清理语言语法本身-删除模糊不清的东西,如except Exception1, Exception2 ,清理标准模块(没有 urllib、urllib2、httplib 等)。

实际上,你无法做太多事情来提高它的性能,尽管我想像像垃圾收集和内存管理代码这样的东西会有一些调整,但它不会是一个"哇,我的数据库统计生成代码用一半的时间完成了!"的改进-这是通过改进代码而不是语言获得的!

实际上,语言的性能是无关紧要的-所有解释型语言基本上以相同的速度运行。 我发现 Python 更快的原因在于所有内置模块和易于编写的语法-这在 Python3 中已经得到了改进,所以我想从这些方面来看,Python3 的性能比 Python2.x 更好。


3
“所有的解释型语言基本上都运行在相同的速度”这种说法非常不正确。解释型代码路径可以编译成本机代码,可以看到最近的JavaScript虚拟机竞争者已经实现了这一点。 - James Baker
4
这意味着与语言无关,而是与为其编写的编译器有关。你可以有一个Python编译器,它的速度大致与JavaScript编译器相同。 - gbjbaanb

5

IO库已经进行了完全的重新设计,新的实现是纯Python编写的。尽管这是一个功能上的改进,但目前它的速度要慢得多。正在努力重写大部分新系统的C代码。有关详细信息,请参见这些 bug 报告


4

我认为现在进行这种比较还为时过早。在测试版发布之前,请等待正式版本发布再进行基准测试。在发布之前,解释器可能会得到大幅度的改进,但总体来说,我认为对于大多数用途,性能是可以与其他语言相媲美的。如果你正在运行一个对速度要求非常高的应用程序,那么Python是否是正确的语言呢?


3

除非有一种新的虚拟机计划(我还没有听说过这样的计划),否则有足够的理由相信在长期内,Py3K的性能至少会渐近地等同于2.5。

可能需要几个月的时间,但最终会发生,因为Py3k的新功能中没有任何固有的性能不佳之处。

总之,我认为没有必要担心它。也不需要希望某种重大改进。


(更新于2010年3月30日)由于unladen-swallow将被合并到Python 3中并提供明显的加速,因此此答案今天不太相关。公平地说,这确实是一个新的虚拟机 :-) - Eli Bendersky

0

我不确定现在是否更快,但我必须期望它最终会更快,因为这是新的性能工作将发生的地方,而不是所有这些工作都会被回溯。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接