未使用の変数には、Elixirに_
という名前を付けるのが一般的なルールです。そうすることで、その変数にバインドされているものはすべて停止します。エリクサーで "_var"を "_"に使用した場合のパフォーマンスへの影響?
しかし、無視された引数を示すために、接頭辞のアンダースコアを広く使用するパターンには、_tail
という形式で気付いています(変数は何のヒントになるのかということを意図しています)。
あなたが_tail
にアクセスしようとすると、このはシェルに警告を経由して、言語によって奨励されています
警告:下線変数「_tail」が設定された後に使用されています。先頭のアンダースコアは、変数の値を無視することを示します。これが意図されている場合は、変数の名前を変更してアンダースコアを削除してください。
しかし、ここにキャッチがあります。 _tail
には変数がバインドされていますが、_
を使用している場合は変数にバインドされていません。
これは、無視された変数に_
以外の名前を付けるとパフォーマンスが低下することを意味しますか?または、エリクシールはまだ舞台裏で_
を縛りますが、アクセスしようとするとエラーになりますか?
編集:アーランコンパイラは、具体的_
として_*
を治療するために、このケースを最適化し、したがって、オーバーヘッド、ソースが無いように見えます:http://erlang.org/doc/efficiency_guide/myths.html
"実際の問題は、間違った場所や間違った時間で効率を心配するのにプログラマーが過度に時間を費やしてしまっていることであり、早すぎる最適化はプログラミングのすべての邪悪(または少なくともほとんど)の根源です。 - ドナルドクヌス。以前のコードではなく、コードでのパフォーマンスに問題があると、パフォーマンスの低下を心配します。 –
@OnorioCatenacci私は、パフォーマンスを改善するために使用するのではなく、どのように動作するかにもっと関心があります。一般的に私はあなたが使用した見積もりに同意しますが、それが問題になるまで心配するのではなく、無関係な作業方法です。例えば;私はおそらくこの質問への答えを学ぶことはないだろう。 – whitfin
未熟な最適化は、本当に無知な方法です。しかし、もしあなたが「フードの下で」この仕組みがどのように機能しているのかを知りたければ、Elixirのソースを見てみませんか? –