English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
パフォーマンスについて話す際には、以下のErlangに関するポイントに注意してください。
Funsは非常に高速です −R6BではFunsに独自のデータ型を割り当て、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コードの単語に指し示しており、命令の割り当てが非常に高速です。