2010-02-05 63 views

回答

11

进行跟踪,断点和单步执行,光束仿真器提供的功能是不是在本地编译的代码可用。当您加载同一模块的较新版本时,本地代码还没有从内存中真正卸载,这仍然存在限制。 (如果你有一个长期运行的系统,在这个系统中你不断升级模块或者动态地生成和编译模块,这可能是一个问题。)

此外,在本地代码和模拟BEAM代码之间跳转时有一个小的开销,所以你应该避免让这种模式在速度紧张的紧密环路中切换。最好将所有紧密相关的模块编译为本地模块,并且如果可能的话,也可以编译最重要的标准库模块最后,尽管本机编译器经过了很好的测试,但是HiPE中编译器错误的概率比BEAM仿真器C代码中的错误率高一点(尽管可能不高于GCC中的错误),但是,所以你可能会冒更大的系统段错误风险。这些日子虽然很罕见。总之,现在可能不推荐进行本地编译的主要地方是独立产品(如提供给客户的黑盒服务器),其中稳定性,远程可调试性和低内存使用是您主要关心的问题,计算速度通常不会。

+0

“现在可能不推荐本地编译的主要地方是独立产品”:这似乎与@rvidring在相关文章中所说的相反。 – jldupont 2010-02-06 11:34:49

+0

似乎无法找到您指的帖子。指针? – RichardC 2010-02-06 23:26:11

+3

我说了什么? :-)我似乎无法找到它。 – rvirding 2010-02-08 14:27:42