📅  最后修改于: 2020-11-04 06:00:58             🧑  作者: Mango
在讨论性能时,需要注意有关Erlang的以下几点。
Funs非常快-Funs在R6B中被赋予了自己的数据类型,并在R7B中得到了进一步的优化。
使用++运算符-需要正确使用此运算符。以下示例是执行++操作的错误方法。
-module(helloworld).
-export([start/0]).
start()->
fun_reverse([H|T]) ->
fun_reverse(T)++[H];
fun_reverse([]) ->
[].
当++运算符复制其左操作数时,结果将重复复制,从而导致二次复杂度。
使用字符串-如果处理不当,字符串处理会很慢。在Erlang中,您需要更多地考虑如何使用字符串并选择适当的表示形式。如果使用正则表达式,请使用STDLIB中的re-module而不是过时的regexp模块。
BEAM是基于堆栈的字节码虚拟机-BEAM是基于寄存器的虚拟机。它具有1024个虚拟寄存器,用于保存临时值和在调用函数时传递参数。需要在函数调用后保留的变量将保存到堆栈中。 BEAM是一个线程代码解释器。每个指令都是直接指向可执行C代码的字,从而使指令分派非常快。