我正在考虑将 IronPython 作为我正在编写的应用程序的脚本语言嵌入。所以为了尝试一下,我下载了 IronPython 2.0 并启动了交互式解释器。在我的带有 6 Gigs 内存的 Intel Quad Core 上,刚启动这件事大约需要 5 秒钟。我很难想象这对于一台功能较弱的机器来说会有多大的延迟。
基于这些基准,看起来 IronPython 的性能实际上并不算太差。或者是吗?我在安装过程中是否配置错误?或者这是交互式解释器的问题?
我正在考虑将 IronPython 作为我正在编写的应用程序的脚本语言嵌入。所以为了尝试一下,我下载了 IronPython 2.0 并启动了交互式解释器。在我的带有 6 Gigs 内存的 Intel Quad Core 上,刚启动这件事大约需要 5 秒钟。我很难想象这对于一台功能较弱的机器来说会有多大的延迟。
基于这些基准,看起来 IronPython 的性能实际上并不算太差。或者是吗?我在安装过程中是否配置错误?或者这是交互式解释器的问题?
IronPython 的性能确实相当不错。您获得的启动性能损失与 .NET 运行时有关。.NET 应用程序的启动时间通常很慢,因为大量程序集被加载,其中一些(至少是一些类)被即时编译。
这是 .NET 中的预期行为。实际运行时性能要好得多。通过预编译 IronPython 程序集并将副本放入 GAC:您机器的全局程序集缓存,甚至可以提高启动性能。这可以使用gacutil.exe
.
您还可以预编译 IronPython 附带的标准库,以获得更好的启动性能。有一个 pyc.py 示例可以做到这一点。
内核数量不会对启动性能产生太大影响 :)
由于 32 位和 64 位抖动之间的性能差异,在 64 位操作系统上启动特别慢。如果您使用的是 64 位操作系统但不需要 64 位进程,请尝试以下操作:
32 位版本应该会给你更好的启动——尽管仍然远不及 CPython 启动。但这是我们正在继续努力的事情。
启动时间和运行性能没有直接关系。Java applet 之所以享有盛名,主要不是因为 applet 运行缓慢,而是因为它需要几分钟的运行时间才能启动。如果您正在做一个桌面应用程序,我会担心启动性能。如果您正在运行的服务器代码的运行时间始终处于正常状态,那么这不是问题。
CodePlex 上 IronPython 代码的解释器启动时间有所改进。尽管与 CPython 相比,我仍然看到延迟,但有显着的改进。