Python 2.x vs 3.x Speed

时间:2010-01-21 19:43:18

标签: python performance

我是博士生,使用Python编写我用于研究的代码。我的工作流程通常包括对代码进行少量更改,运行程序,查看结果是否得到改进以及重复该过程。因此,我发现自己花了更多的时间来等待我的程序运行,而不是实际工作(我知道这是一种常见的经历)。我目前在我的系统上使用最新版本的Python 2,所以我的问题是切换到Python 3是否会给我带来任何速度提升。在这一点上,我没有一个令人信服的理由转向Python 3,所以如果执行速度相似,我可能会坚持使用2.x.我知道我将不得不修改我的代码以使其在Python 3中运行,因此在两个版本上测试它以查看哪些运行速度更快并不容易。在花费时间将代码更新到Python 3之前,我需要有理由相信我会提高速度。

5 个答案:

答案 0 :(得分:23)

This article (archive.org)表示Python 3.0实际上比Python 2.6慢一些,但我认为其中许多问题已得到解决。话虽这么说,Numpy还没有被带到Python 3.0,而且很多高性能(用c编写)数字功能的东西都隐藏了。 希望它能在2009年底或2010年初准备好。

您不应该将性能视为切换到Python 3的理由;我认为你不会看到一致的速度提升。

编辑:已经发布了支持Python 3的Numpy版本。

Edit2:此答案(以及此问题的其他答案)已过时

答案 1 :(得分:5)

目前,Python 3上的速度与Python 2大致相同......如果你正在寻找速度,它不是Python 3与Python 2,而是Psyco,Cython等其他工具。

但是,最近,已经出现了合并Unladen Swallow的计划,这是一个用Python 3在Python上实现JIT的Google项目。当然,它不会很快,但是,在某些时候,也许Python 3上的速度会比Python 2显着提高。他们声称速度已经提高了10%(在Python 2上)。他们的目标是将速度提高到5倍。

有关详细信息,请参阅PEP 3146

编辑:正如Brian所言,PEP 3146已退休。

答案 2 :(得分:3)

尝试优化算法或更改使用的数据结构。这通常是提高绩效的最佳方式。

答案 3 :(得分:2)

我无法回答你问题的根源,但如果你读到有关io模块性能低下的任何内容,请忽略它。这些在Python 3.0中肯定是性能问题,但它们在Python 3.1中基本解决了。

答案 4 :(得分:2)

我的系统发育分析需要很长时间才能运行,并且使用了大约6个python脚本以及其他生物信息学软件(肌肉,clustal,blast,甚至R!)。我使用临时文件来保存中间结果,使用子脚本模块的主脚本将所有部分粘合在一起。更改主控件只需运行我想要测试的修改部件很容易。但是,如果对早期步骤进行了更改,并且您只知道在整个过程结束时有多好,那么这种策略就无济于事。