15

根据这个:

http://www.codeplex.com/IronPython/Wiki/View.aspx?title=IP20VsCPy25Perf&referringTitle=IronPython%20Performance

IronPython (Python for .Net) 在同一台机器上比普通 Python (cPython) 更快。为什么是这样?我认为编译的 C 代码总是比等效的 CLI 字节码更快。

4

5 回答 5

41

Python 代码不会被编译为 C,Python 本身是用 C 编写的并解释 Python 字节码。CIL 被编译为机器代码,这就是为什么您在使用 IronPython 时会看到更好的性能。

于 2009-02-02T20:23:27.600 回答
9

你是对的,C 的速度要快得多。这就是为什么在这些结果中,CPython 处理字典时的速度是纯 C 的两倍。另一方面,Python 代码不是编译的,而是解释的。CPython 中的函数调用非常慢。但另一方面:

TryRaiseExcept:  +4478.9%

现在,IronPython 得到的地方是非常错误的。

然后是这个 PyPy 项目,其目标之一是即时编译器。甚至还有 Python 的一个子集,称为 RPython(精简 Python),可以静态编译。这当然要快得多

于 2009-02-03T12:49:08.357 回答
5

我不确定您是如何得出 IronPython 比 CPython 更快的结论。您发布的链接似乎表明他们擅长不同的事情(如已指出的例外情况)。

于 2009-03-07T00:21:05.403 回答
5

将你的问题“为什么?”转为“哦,真的吗?” “擅长不同的事情”(杰森贝克)是正确的。例如,cpython 比 IronPython 轻松启动时间。

c:\Python26\python.exe Hello.py
c:\IronPython\ipy.exe Hello.py

Cpython 几乎立即(<100 毫秒)执行一个基本的 hello world,其中 IronPython 的启动开销为 4 或 5 秒。这让我很恼火,但还不足以阻止我使用 IronPython。

于 2009-05-06T17:59:51.190 回答
4

是否可以通过您链接到的页面上的此符号来解释:

由于动态语言运行时中的站点缓存,IronPython 在 PyStone 传递次数上比默认值表现更好

于 2009-02-02T20:26:06.393 回答