【问题标题】:IronPython performanceIronPython 性能
【发布时间】:2009-02-08 17:23:20
【问题描述】:

我正在考虑将 IronPython 作为我正在编写的应用程序的脚本语言嵌入。所以为了尝试一下,我下载了 IronPython 2.0 并启动了交互式解释器。在我的带有 6 Gigs 内存的 Intel Quad Core 上,刚启动它大约需要 5 秒钟。我几乎无法想象这对于一台功能较弱的机器来说会有多少延迟。

基于these benchmarks,看来 IronPython 的性能实际上并不算太差。或者是吗?我在安装过程中是否配置错误?或者这是交互式解释器的问题?

【问题讨论】:

    标签: .net performance ironpython


    【解决方案1】:

    IronPython 的性能确实相当不错。您获得的启动性能损失与 .NET 运行时有关。 .NET 应用程序的启动时间通常很慢,因为会加载大量程序集,并且其中一些(至少是某些类)是动态编译的。

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

    【讨论】:

      【解决方案2】:

      您还可以预编译 IronPython 附带的标准库,以获得更好的启动性能。有一个 pyc.py 示例可以做到这一点。

      【讨论】:

      • 我刚刚尝试过这个,但我的性能略微更差。不知道为什么。
      【解决方案3】:

      内核数量不会对启动性能产生太大影响 :)

      由于 32 位和 64 位抖动之间的性能差异,在 64 位操作系统上启动特别慢。如果您使用的是 64 位操作系统但不需要 64 位进程,请尝试以下操作:

      1. 将 ipy.exe 复制到 ipy32.exe
      2. 使用 Windows SDK 中的 corflags.exe 来 将 ipy32.exe 标记为 32 位 通过说“corflags”可执行 /32bit+ ipy32.exe”。

      32 位版本应该会给你更好的启动——尽管仍然远不及 CPython 启动。但这是我们正在继续努力的事情。

      【讨论】:

        【解决方案4】:

        启动时间和运行性能没有直接关系。 Java applet 之所以享有盛名,主要不是因为 applet 运行缓慢,而是因为它需要几分钟的运行时间才能启动。如果您正在做一个桌面应用程序,我会担心启动性能。如果您正在运行的服务器代码的运行时间始终处于正常状态,那么这不是问题。

        【讨论】:

          【解决方案5】:

          CodePlex 上 IronPython 代码的解释器启动时间有所改进。尽管与 CPython 相比我仍然看到延迟,但有显着的改进。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-07-19
            • 2012-06-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多