【问题标题】:Performance: Python 3.x vs Python 2.x [closed]性能:Python 3.x 与 Python 2.x [关闭]
【发布时间】:2010-09-15 06:53:00
【问题描述】:

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

【问题讨论】:

  • 问这个问题两年后,不知道答案是否还是一样。
  • 问这个问题七年后,答案还是一样。

标签: python performance python-3.x python-2.x


【解决方案1】:

在官方基准测试中,3.0 比 2.5 慢。来自"What’s New in Python 3.0"

3.0 的最终结果 概括是 Python 3.0 运行 pystone 基准大约 10% 比 Python 2.5 慢。最有可能的 最大的原因是删除 小整数的特殊情况。 有改进的余地,但它 将在3.0发布后发生!

【讨论】:

  • 这在 2015 年仍然普遍如此,如果有问题的代码有很多字符串操作,截至 2015 年 11 月,Python 2.7 通常比 Python 3.5 快。
【解决方案2】:

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

Python 3 背后的想法是清理语言语法本身 - 删除像 except Exception1, Exception2 这样的模棱两可的东西,清理标准模块(没有 urllib、urllib2、httplib 等)。

确实没有什么可以提高它的性能的,虽然我想像垃圾收集和内存管理代码这样的东西会有一些调整,但这不会是“哇,我的数据库统计生成代码”一半时间完成!”改进——这是你通过改进代码而不是语言得到的!

真的,语言的性能无关紧要 - 所有解释语言基本上都以相同的速度运行。 为什么我发现 Python “更快”是所有内置模块和易于编写的语法 - 在 Python3 中得到了改进,所以我猜从这些方面来说,是的,python3 的性能比python2.x..好。

【讨论】:

  • “所有解释语言基本上都以相同的速度运行”是非常不正确的。解释的代码路径可以编译为本机代码,请参阅最近的 Javascript VM 竞争对手。
  • 这与语言无关,而是为它编写的编译器。您可以拥有一个 python 编译器,它的速度大致与 javascript 编译器一样快。
【解决方案3】:

IO 库已经完全重新设计,新的实现是纯 Python 的。虽然这是一项功能改进,但目前速度要慢得多。用 C 重写大部分新系统的工作正在进行中。有关详细信息,请参阅thesebugreports

【讨论】:

    【解决方案4】:

    我认为最终进行这种比较还为时过早。等到它退出测试版后再对其进行基准测试。解释器可能会在发布之前得到极大的改进,但总的来说,我认为对于大多数用途来说,性能是相当的,如果你正在运行一个真正注重速度的应用程序,python 真的是正确的语言吗?

    【讨论】:

      【解决方案5】:

      除非有某种新 VM 的计划(我还没有听说过任何这样的计划),否则有理由相信,从长远来看,Py3K 的性能将至少渐近地相等2.5

      这可能需要几个月的时间,但最终会发生,因为 Py3k 的新功能中没有任何东西天生就性能较差。

      总而言之,我认为没有地方担心它。也不希望有某种重大改进。

      【讨论】:

      • (更新 30.03.2010):这个答案在今天并不是很重要,因为 unladen-swallow 将被合并到 Python 3 中并提供明显的加速。公平地说,这一个新的虚拟机:-)
      【解决方案6】:

      如果它现在更快,我不认为,但我不得不期待它最终会是,因为新的性能工作将发生在那里,而不是所有这些都将被向后移植。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-14
        • 1970-01-01
        相关资源
        最近更新 更多