需要花費數小時將pypy實現轉換爲c文件,並在具有2G內存和Intel Core2 2GHz CPU的現代筆記本電腦上構建pypy-c。爲什麼PyPy翻譯如此緩慢?
我知道這是一個cpu密集型任務,但它是否必須如此緩慢?是否有機會或空間來減少計算,重新安排計算順序並將時間減少到幾十分鐘?
需要花費數小時將pypy實現轉換爲c文件,並在具有2G內存和Intel Core2 2GHz CPU的現代筆記本電腦上構建pypy-c。爲什麼PyPy翻譯如此緩慢?
我知道這是一個cpu密集型任務,但它是否必須如此緩慢?是否有機會或空間來減少計算,重新安排計算順序並將時間減少到幾十分鐘?
免責聲明:我不是PyPy專家 - 特別是,我不明白RPython翻譯的細節,我只列舉docs什麼overheared在郵件列表,並在博客上。
「CPU密集型任務」?本月低估提名。我自己並不十分理解翻譯過程的細節,但即使我可以告訴你,它的每個分析和優化過程都會對很多代碼做很多非常複雜的工作。
gcc -O2
或類似的代碼編譯的,當然這些代碼有很多解析和檢查工作,而且本身會有許多分析和優化工作要做。所以是的,這是一個相當嚇人的巨大任務。難怪你的弱小CPU丟失了。作爲參考,當benchmarking the translation process in November 2010時,PyPy人使用了Intel Xeon W3580(3.33 GHz)。它仍然花費了大約76分鐘,即使它們也有12 GB的RAM - 這導致了下一個問題:在此過程中需要很多RAM的(64位Ubuntu上2.3 GB的時候,不知道數字如何轉化爲你的情況)。我很肯定你最終會超過你的體能內存 - 輸入過多的交換和相關的踢到性能的腹股溝。
結合你可以有幾個其他程序運行竊取CPU時間和內存的事實,在我看來,你的體驗非常好。翻譯PyPy保留給更強大的計算機。如果有什麼能夠從根本上改善這些時間,像我們這樣的外部人士不太可能找到它。我會把這些問題留給開發者。
感謝您的快速回答。由於我沒有太多內存,所以我使用官方的python來運行翻譯,這可能使得這個過程比根據文檔應該更長,但是我確實在我的可憐的機器上成功地構建了pypy。 – jaimechen 2011-05-27 18:24:06