Erlang-パフォーマンス
パフォーマンスについて話すときは、Erlangについて次の点に注意する必要があります。
Funs are very fast − FunsはR6Bで独自のデータ型が与えられ、R7Bでさらに最適化されました。
Using the ++ operator−この演算子は適切な方法で使用する必要があります。次の例は、++操作を行うための間違った方法です。
例
-module(helloworld).
-export([start/0]).
start()->
fun_reverse([H|T]) ->
fun_reverse(T)++[H];
fun_reverse([]) ->
[].
++演算子が左側のオペランドをコピーすると、結果が繰り返しコピーされ、2次の複雑さになります。
Using Strings−不適切に実行すると、文字列の処理が遅くなる可能性があります。アーランでは、文字列の使用方法についてもう少し考えて、適切な表現を選択する必要があります。正規表現を使用する場合は、STDLIBの再モジュールを使用する代わりにobsolete regexp module。
BEAM is a Stack-Based Byte-Code Virtual Machine− BEAMは、レジスタベースの仮想マシンです。一時値を保持し、関数を呼び出すときに引数を渡すために使用される1024個の仮想レジスタがあります。関数呼び出しを生き残るために必要な変数は、スタックに保存されます。BEAMはスレッドコードインタプリタです。各命令は、実行可能なCコードを直接指すワードであるため、命令のディスパッチが非常に高速になります。