编译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