2009-02-02 59 views
10

更快的根據是:爲什麼IronPython的比官方Python解釋器

http://www.codeplex.com/IronPython/Wiki/View.aspx?title=IP20VsCPy25Perf&referringTitle=IronPython%20Performance

的IronPython(的Python .NET)比同一臺機器上常規的Python(CPython的)速度更快。爲什麼是這樣?我認爲編譯的C代碼總是比等效的CLI字節碼快。

+3

我不確定cPython是更正式的Jython或IronPython。請參閱http://docs.python.org/reference/introduction.html#alternate-implementations – 2009-02-02 22:57:55

+0

@ S.Lott:它不是* Python *,但它是默認實現,僅僅是因爲它是第一個。 – 2009-02-03 12:52:33

+3

Python不會編譯爲C – 2009-03-07 00:22:37

回答

38

Python代碼沒有被編譯爲C,Python本身是用C語言編寫的並且解釋了Python字節碼。 CIL被編譯爲機器碼,這就是爲什麼你使用IronPython時看到更好的性能。

3

莫非通過頁面上的這個符號鏈接到您解釋:

由於在動態 語言運行時現場緩存,IronPython的執行 更好地與更多的PyStone通過比 默認值

8

你說得對,C要快得多。這就是爲什麼在這些結果中,CPython的速度是字典的兩倍,而字典幾乎是純C的。另一方面,Python代碼不會被編譯,而是被解釋。 CPython中的函數調用非常緩慢。 但在另一方面:

TryRaiseExcept: +4478.9% 

現在,有IronPython的地方得到的是可怕的錯誤。

然後,有這個PyPy項目,其中一個目標是即時編譯器。甚至有Python的子集,稱爲RPython(Reduced Python),可以靜態編譯。哪一個當然是很多更快。

5

我不確定您是如何得出IronPython比CPython快的結論。你發佈的鏈接似乎表明他們擅長不同的事情(如已經指出的例外情況)。

5

徘徊你的問題「爲什麼?」,「哦,真的嗎?」 「善於不同的事情」(傑森貝克)是正確的。例如,cpython擊敗了IronPython的啓動時間。

c:\Python26\python.exe Hello.py 
c:\IronPython\ipy.exe Hello.py 

CPython的執行基本的hello world近瞬間(< 100毫秒),其中IronPython的有4或5秒的啓動開銷。這讓我很惱火,但還不足以阻止我使用IronPython。

相關問題