私はswitch-case
ECMAscriptで定期的にステートメントを使用しています。それについての私の個人的な支持に加えて、この言語での一般的なパフォーマンスについて、特に条件ステートメントについて、専門的な文献がたくさん出ています。
たとえば、私が覚えている 1 つの良い例は、Nicholas Zakas による優れた本「 High Performance Javascript 」です。他の多くの本や記事と同様に、3 つ以上の条件付きケースを使用している場合、switch-case
ステートメントは常にステートメントよりも高速であると言われています。if (else)
私が知っている C に似た言語では、ステートメントはswitch-case
バイナリ ハッシュ マップに他なりません。ここよく読んでね
ただし、この序文の後に:
チームでイベント ハンドラー関数の使用法と、イベント タイプをどのように処理するかについて話し合いました。イベントに対して明示的な関数を使用するかどうか、または複数のイベント タイプを処理する 1 つの大きな関数を使用する必要があるかどうか。その議論の中で、パフォーマンスの問題が発生し、非常に基本的で単純なjsPerfを作成しました。
http://jsperf.com/engine-context-data-caching-test/3
そして、私は結果と私が見たものにかなりショックを受けました. これらのテストケースを信じて、実行のパフォーマンスには順序が非常に重要です。とそこcase statements
の違いは、ステートメント内のステートメントの位置だけです。これは現実的で合理的ですか?long
longSlow
case 'baz'
switch
何かを見落とす可能性はありますか?まず、case
ステートメントが不十分で、インタープリターがif-else
ボンネットの下で条件を作成するだけかもしれないと考えたので、結果に変化はなく、数を増やしました。
V8やSpidermonkey などのECMAscriptエンジンがまだこの問題を最適化していないとは信じられません。