編譯Erlang .erl
源與+native
選項與通常的「非本地」編譯相比有什麼限制/約束?使用「+ native」編譯的約束/限制是什麼?
相關的:Erlang OTP release compiles with HiPE?
編譯Erlang .erl
源與+native
選項與通常的「非本地」編譯相比有什麼限制/約束?使用「+ native」編譯的約束/限制是什麼?
相關的:Erlang OTP release compiles with HiPE?
進行跟蹤,斷點和單步執行,光束仿真器提供的功能是不是在本地編譯的代碼可用。當您加載同一模塊的較新版本時,本地代碼還沒有從內存中真正卸載,這仍然存在限制。 (如果你有一個長期運行的系統,在這個系統中你不斷升級模塊或者動態地生成和編譯模塊,這可能是一個問題。)
此外,在本地代碼和模擬BEAM代碼之間跳轉時有一個小的開銷,所以你應該避免讓這種模式在速度緊張的緊密環路中切換。最好將所有緊密相關的模塊編譯爲本地模塊,並且如果可能的話,也可以編譯最重要的標準庫模塊最後,儘管本機編譯器經過了很好的測試,但是HiPE中編譯器錯誤的概率比BEAM仿真器C代碼中的錯誤率高一點(儘管可能不高於GCC中的錯誤),但是,所以你可能會冒更大的系統段錯誤風險。這些日子雖然很罕見。總之,現在可能不推薦進行本地編譯的主要地方是獨立產品(如提供給客戶的黑盒服務器),其中穩定性,遠程可調試性和低內存使用是您主要關心的問題,計算速度通常不會。
謝謝,我只是想知道爲什麼hipe沒有加快我的程序。 +原生它運行速度的兩倍。 – Koistinen 2010-02-05 14:31:21