根据这个:
IronPython (Python for .Net) 在同一台机器上比普通 Python (cPython) 更快。为什么是这样?我认为编译的 C 代码总是比等效的 CLI 字节码更快。
根据这个:
IronPython (Python for .Net) 在同一台机器上比普通 Python (cPython) 更快。为什么是这样?我认为编译的 C 代码总是比等效的 CLI 字节码更快。
Python 代码不会被编译为 C,Python 本身是用 C 编写的并解释 Python 字节码。CIL 被编译为机器代码,这就是为什么您在使用 IronPython 时会看到更好的性能。
你是对的,C 的速度要快得多。这就是为什么在这些结果中,CPython 处理字典时的速度是纯 C 的两倍。另一方面,Python 代码不是编译的,而是解释的。CPython 中的函数调用非常慢。但另一方面:
TryRaiseExcept: +4478.9%
现在,IronPython 得到的地方是非常错误的。
然后是这个 PyPy 项目,其目标之一是即时编译器。甚至还有 Python 的一个子集,称为 RPython(精简 Python),可以静态编译。这当然要快得多。
我不确定您是如何得出 IronPython 比 CPython 更快的结论。您发布的链接似乎表明他们擅长不同的事情(如已指出的例外情况)。
将你的问题“为什么?”转为“哦,真的吗?” “擅长不同的事情”(杰森贝克)是正确的。例如,cpython 比 IronPython 轻松启动时间。
c:\Python26\python.exe Hello.py
c:\IronPython\ipy.exe Hello.py
Cpython 几乎立即(<100 毫秒)执行一个基本的 hello world,其中 IronPython 的启动开销为 4 或 5 秒。这让我很恼火,但还不足以阻止我使用 IronPython。
是否可以通过您链接到的页面上的此符号来解释:
由于动态语言运行时中的站点缓存,IronPython 在 PyStone 传递次数上比默认值表现更好