2009-02-08 54 views
7

我在考慮將IronPython作爲我正在編寫的應用程序的腳本語言嵌入。因此,爲了試用它,我下載了IronPython 2.0,並啓動了交互式解釋器。剛開始的時候,我的英特爾四核處理器需要大約5秒鐘的時間,並有6G內存。我幾乎無法想象這會是一臺功率較小的機器會有多少延遲。IronPython性能

根據these benchmarks,似乎IronPython的性能實際上並不太糟糕。或者是?我在安裝過程中有錯誤的配置嗎?或者這是交互式解釋器的問題?

回答

13

IronPython的表現真的很不錯。您獲得的啓動性能損失與.NET運行時間有關。 .NET應用程序的啓動時間通常很慢,因爲很多程序集都會被加載,其中一些(至少某些類)會被即時編譯。

這是.NET中的預期行爲。實際的運行時性能要好得多。即使啓動性能可以通過預編譯IronPython程序集並將副本放入機器的GAC:全局程序集緩存中來提高。這可以使用gacutil.exe完成。

1

啓動時間和運行性能沒有直接關係。 Java小程序的緩慢聲譽得到了大部分的聲譽,這並不是因爲小程序運行緩慢,而是因爲運行時間只需幾分鐘即可開始。如果你正在做一個桌面應用程序,我會擔心啓動性能。如果您的運行時服務器代碼始終運行,那麼這不是問題。

4

您還可以預編譯IronPython附帶的標準庫,以獲得更好的啓動性能。有一個pyc.py樣本可以做到這一點。

+1

我剛剛嘗試過這一點,我得到了一點_worse_性能。不知道爲什麼。 – Cameron 2010-06-16 20:22:20

2

芯的數量不會使多大的差別來啓動PERF :)

啓動是因爲32位和64位之間的性能差異在64位操作系統上特別慢抖動。如果您使用的是64位操作系統,但並不需要一個64位的過程中,請嘗試以下操作:

  1. 副本ipy.exe從Windows SDK ipy32.exe
  2. 使用corflags.exe 通過說「corflags /32bit + ipy32.exe」將標記爲ipy32.exe作爲32位 可執行文件。

32位版本應該給你更好的啓動 - 雖然仍然遠不如CPython啓動。但這是我們正在繼續努力的方向。

1

CodePlex上的IronPython代碼中的解釋器啓動時間有所改進。儘管與CPython相比,我仍然看到延遲,但有顯着的改善。