Python比Java/C#慢吗?[已关闭]

2022-08-31 13:23:38

Python比Java/C#慢吗?

performance-comparison-c-java-python-ruby-jython-jruby-groovy

这是一个优化CPython的项目:空吞咽


答案 1

不要将语言和运行时混为一谈。

Python(语言)有许多运行时实现。

  • CPython通常是解释的,并且比本机代码C#慢。它可能比Java慢,这取决于Java JIT编译器。

  • JYthon在JVM中被解释,并且具有与Java相同的性能配置文件。

  • IronPython依赖于与C#相同的.NET库和IL,因此性能差异将相对较小。

  • Python可以通过PyREX,PyToC等转换为本机代码。在这种情况下,它通常表现与C++一样好。在某种程度上,您可以进一步优化C++,并可能挤出比PyREX未优化输出更好的性能。

    有关详细信息,请参阅 http://arcriley.blogspot.com/2009/03/so-long-pyrex.html

请注意,Python(语言)并不慢。一些Python运行时(例如CPython)将比本机代码C++慢。


答案 2

问为什么Python比Java / C#慢是不正确的。Java有多快?好吧,天真的解释器比优化的编译器慢十倍左右。我相信有一个用JavaScript编写的Java bytcode解释器 - 这可能不是很快。因此,预期的问题似乎是“为什么CPython语言系统比等效的Sun,IBM和Oracle JRE以及Microsoft .NET运行时慢?

我相信正确的答案是非技术性的。最快的 Java 和 .NET 运行时速度更快,因为它们拥有大型全职技术团队,可在性能竞争激烈的环境中开发它们。

动态语言系统易于实现。任何白痴都能做到。我有。静态语言系统的设计和实现更加复杂。一个简单的静态系统往往比等效的刚工作动态等效物运行得快得多。然而,高度优化的动态系统几乎可以以同样快的速度运行。我知道一些Smalltalk的实现非常好。一个经常被引用的开发动态系统的例子是MIT Lisp Machine

此外,如果真正的咕噜声是由库代码完成的,那么语言系统可能无关紧要。或者,该语言可以鼓励(或给予时间(!))开发更有效的算法,这些算法可以轻松消除恒定因素的性能差异。


推荐