少しグーグルで検索しましたが、まだ道に迷っているように感じます。私はJavaScriptでCPUエミュレーターを書いています(つまり、私の場合は現在Z80です)。その中心には巨大な switch ステートメントがあります。もちろん、いくつかのベンチマークを実行することはできますが、さまざまなブラウザーの将来の JavaScript エンジンについては確信が持てません (わかりました。誰も実行できないことはわかっていますが、さまざまなブラウザーの JavaScript エンジンについて私よりも詳しい知識を持っている人がいるはずです... )。
switch ステートメントよりも他の構造を使用する方が速いですか? 関数の配列などのように。また、同様の問題: Z80 オペコードを前に付ける可能性がある状況があります。スイッチの一部の「ケース」ブランチには、内部に別のスイッチが必要ですが、すべてではありません。私は、すべてのものをさらに大きな (ただし、「深い」レベルは 1 つだけ) スイッチ構成に変換して、通常は 0 ~ 255 のオペコード、0xDD を前に付けたものは 256 ~ 511 などに変換することを考えています。単一の同じコードの場合)。または、ベース オペコード テーブル (256 の「ケース」分岐) に対しても、大きな switch ステートメントをできるだけ避ける必要がありますか?
C コードの場合、コンパイラはこの状況で非常に高速なジャンプ テーブルを作成します。しかし、JavaScriptについてはどうですか?
もう 1 つの同様の質問: 'case' 分岐が 2 つと 'default' エントリが 1 つだけの switch ステートメントを使用する価値はありますか?
switch コンストラクトで数値 (および整数 - JavaScript ではあまり意味がありませんが、AFAIK には数値型が 1 つしかないため) の値のみを使用することを宣言することが重要な場合があります。