IronPython性能

8
我考虑将IronPython作为我正在编写的应用程序的脚本语言进行嵌入。因此,为了尝试它,我下载了IronPython 2.0并启动了交互式解释器。仅启动这个东西就需要在我的Intel Quad Core上花费约5秒钟,内存为6 GB。我几乎无法想象对于一台性能较弱的计算机会有多少延迟。
根据这些基准测试,似乎IronPython的性能实际上并不太糟糕。或者是吗?我在安装过程中配置错误了吗?还是这是交互式解释器的问题?
5个回答

14

IronPython 的性能真的很不错。启动时要承受的性能惩罚与 .NET 运行时有关。一般来说,.NET 应用程序会因为需要加载许多程序集(其中至少有一些类是实时编译的)而具有缓慢的启动时间。

这是 .NET 中预期的行为。实际的运行时性能要好得多。甚至可以通过预编译 IronPython 程序集并将其放入机器的 GAC(全局程序集缓存)中来提高启动性能。这可以使用 gacutil.exe 实现。


IronPython建立在一个伟大的想法之上。只是想知道它是否仍然是将相对简单的Python编码嵌入C#应用程序的好选择。 - DavidY

4
你可以预编译随 IronPython 一起提供的标准库,以获得更好的启动性能。有一个名为 pyc.py 的示例程序可以实现此功能。

1
我刚试了一下,表现稍微变差了。不知道为什么。 - Cameron

2
核心数量对启动性能没有太大影响 :)
64位操作系统上的启动速度特别慢,因为32位和64位JIT编译器之间的性能差异。如果您使用的是64位操作系统但不需要64位进程,请尝试以下操作:
  1. 将ipy.exe复制到ipy32.exe
  2. 使用Windows SDK中的corflags.exe将ipy32.exe标记为32位可执行文件,方法是输入“corflags / 32bit+ ipy32.exe”。
32位版本应该会给您带来更好的启动速度 - 尽管仍然远远不及CPython启动速度。但这是我们继续努力改进的事情。

1

启动时间和运行性能并不直接相关。Java小程序因为启动时间长而被认为速度慢,但实际上它们运行得很快。如果你正在编写桌面应用程序,我会关注启动性能。如果你正在运行服务器端代码,并且运行时间持续不断,那么这就不是一个问题。


1

在CodePlex上的IronPython代码中,解释器启动时间有所改善。虽然与CPython相比仍存在延迟,但已经有了显著的改进。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接