表演( Performance)
优质
小牛编辑
126浏览
2023-12-01
在谈论性能时,需要注意以下几点关于Erlang。
Funs are very fast - Funs在R6B中获得了自己的数据类型,并在R7B中进一步优化。
Using the ++ operator - 需要以正确的方式使用此运算符。 以下示例是执行++操作的错误方法。
例子 (Example)
-module(helloworld).
-export([start/0]).
start()->
fun_reverse([H|T]) ->
fun_reverse(T)++[H];
fun_reverse([]) ->
[].
当++运算符复制其左操作数时,结果将被重复复制,从而导致二次复杂度。
Using Strings - 如果操作不正确,字符串处理可能会很慢。 在Erlang中,您需要更多地考虑字符串的使用方式并选择合适的表示形式。 如果使用正则表达式,请使用STDLIB中的重新模块而不是obsolete regexp module 。
BEAM is a Stack-Based Byte-Code Virtual Machine - BEAM是基于寄存器的虚拟机。 它有1024个虚拟寄存器,用于保存临时值和调用函数时传递参数。 需要在函数调用中存活的变量将保存到堆栈中。 BEAM是一个线程代码解释器。 每条指令都直接指向可执行的C代码,使指令调度非常快。