English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Erlang 性能

パフォーマンスについて話す際には、以下の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コードの単語に指し示しており、命令の割り当てが非常に高速です。