7

私はswitch-caseECMAscriptで定期的にステートメントを使用しています。それについての私の個人的な支持に加えて、この言語での一般的なパフォーマンスについて、特に条件ステートメントについて、専門的な文献がたくさん出ています。

たとえば、私が覚えている 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の違いは、ステートメント内のステートメントの位置だけです。これは現実的で合理的ですか?longlongSlowcase 'baz'switch

何かを見落とす可能性はありますか?まず、caseステートメントが不十分で、インタープリターがif-elseボンネットの下で条件を作成するだけかもしれないと考えたので、結果に変化はなく、数を増やしました。

V8やSpidermonkey などのECMAscriptエンジンがまだこの問題を最適化していないとは信じられません。

4

1 に答える 1