節にあるパターンマッチはコンパイラによって最適化されます。いくつかのケースでは、節を整理し直しても何も改善されないというものもいくつかあります。例外の一つはバイナリのパターンマッチです。コンパイラはバイナリマッチの節を整列し直すことはしません。記述する方がわずかではありますが早くなります。多少不自然ではありますが、他の例外について示すサンプルを紹介します。いう変数を伴った節です。この変数はどのような物に対してもマッチしてしまいます。他の節でマッチします。コンパイラはこれから説明するように動作する、部分最適なコードを生成することになります。いうアトムと比較します。比較には、バイナリサーチを行う命令が使用されます。これは値が多くなればなるほど効率的に動作します。マッチすれば、この3つの節の中から1つ選択して実行します。最初の3つの節にマッチするものがなければ、変数を使用しているためにどんなものともマッチする4つ目の節とのマッチを試みます。成功すれば、4番目の節が実行されます。比較されて、適切な節が選択されます。2通りの方法で以下のように書き換えてみます。6.これらは最初の例よりは多少効率的にマッチを行うことができます。前のサンプルよりは多少不自然ではないサンプルを紹介します。Ys)].最初の引数に関しては問題ありません。これは変数ですが、すべての節がどれも変数になっているからです。いう2番目の変数です。変数はすべてのものにマッチするため、コンパイラは節の順番を再配置することができず、書かれた順序でマッチを行うコードを生成します。下記のように関数を書き換えたとします。Ys)].コンパイラは自由に節の順序を再配置して、下記のようなコードを生成するでしょう。end.この関数は、与えられたリストが空ではないがとても短いという、良くあると思われるケースにおいては、わずかに速くなっているはずです。いう変数の型について、Dialyzerを使用したときに、より適切な型の推測ができるようになるという他のメリットもあります。関数呼び出し¶ここでは、大ざっぱな(意図的です)、呼び出しの種類ごとの相対的な呼び出しコストに関する説明をおこなっていきます。ここの説明はSolaris/Sparc上で実行したベンチマークを元にしています。m:foo())の呼び出しは、関数呼び出しの中ではもっとも速い呼び出し形式になります。