2009-05-22 68 views
0

IronPython 2.0.1似乎執行比IronPython 1.x慢3倍的腳本文件。 我不相信這不是我正在做的事情,所以我想知道其他人是否也有類似的經歷。IronPython 2.0緩慢執行代碼

我有一個200k的python腳本,需要5秒才能從IP 1.x上的文件執行,並且在IP 2.0.1中執行將近18秒!

回答

0

您的時間安排是否包含啓動時間? IronPython 2.6 Beta對啓動時間和代碼編譯/執行進行了徹底改進。建議你儘可能地嘗試釋放。

乾杯, 戴維

0

IronPython肯定有一些東西比Python中慢得多。通常這是因爲你在實現中遇到了一個奇怪的角落案例。值得嘗試將其縮減爲一個非常簡單的腳本,它表現出性能差異並將其發送到IronPython mailing list - 開發人員的響應速度非常快。

最近有一系列關於IronPython性能的有趣博客文章 - this is a good overview。總結是,一旦避免陷阱,您可以獲得非常好的性能,而IP團隊非常樂意發現這些問題並快速解決問題。縮小repro找出陷阱是最困難的部分 - 一旦你確定了觸發行爲的原因,通常很容易解決。

+0

謝謝,實際上我說的是IronPython 1(pre-dlr)和IronPython 2之間看似很大的性能區別。而不是CPython和IronPython。話雖如此,Python,IP和Jython的性能概述非常豐富。謝謝。 – logan 2009-05-23 22:58:58

+0

啊,對。實際上,我所說的一切都適用於將性能退化從IP 1隔離到IP 2 - 例如,將Resolver One移植到IP 2的許多工作就是發現這種問題,並與開發團隊合作診斷原因。 – babbageclunk 2009-05-24 09:13:56

+0

在看起來像我們所做的事情無法與問題相關的地方,我們確實看到了性能下降的奇怪現象(從1到2),實際上這就是方法調度緩存溢出的情況。它們中的許多似乎是提取DLR的體系結構變化和優化技術的後果。迪諾和團隊在研究發生的事情方面非常有幫助。 – babbageclunk 2009-05-24 09:23:11

0

當我開始使用IronPython 2.0時,我也遇到了類似的問題。對我而言,問題在於DLR的啓動時間很糟糕。加載運行時後,腳本性能相當快。

要減少運行時啓動時間,您可以嘗試NGEN'ing the binaries。這爲我減少了約60%的啓動時間。

即使有了這個修復方法,相對來說還是沒那麼快。如果您的腳本沒有做太多的工作,那麼創業公司仍然會佔用大部分整體時間。希望DLR團隊很快就能解決啓動性能問題。