「アプリでテストする」ことが必須であることは知っています。とはいえ、分析的な洞察も求めたいと思います。
Array要素が順次処理されるアプリ内命令キューを (として) 持っています。詳細は関係ありません。(「命令」を仮想命令と考えてください。つまり、小さな内部仮想マシンのように、アプリケーションの観点からのみ解釈されます)。
実際の問題は、キュー要素を処理するのにどちらが高速かということです。Java によって提供される仮想ディスパッチとswitch-case?
最初のケースでは、
Arrayは独自のオブジェクトの子孫で構成されていOperationます (または、単純にRunnable-- 要点がわかります)。この場合、命令の実行はOperation.run()オブジェクトのオーバーライドを呼び出すだけです。仮想ディスパッチが残りを行いrun()ます。具体的なインスタンスの が呼び出されます。は
Arrayプリミティブ配列で、各要素は連続した範囲 (たとえば、 0..65535intの間) からの命令コードです。int命令処理とは、(A)switch-caseステートメントを介して、または (B)命令コードによって直接インデックス付けされたArray(オブジェクトの) を使用して、命令コードが解釈されることを意味します。Operation
2 番目のケースでは、switch-case最近では十分に最適化されていると思います (特に、連続した範囲を使用しているため)。そのため、Arrayオプションを忘れることができます。
結論から言うと、どちらが速いですか?の分岐に解釈コードを追加するswitch-caseか、仮想ディスパッチを使用しますか?
私はそれがこれに分解すると思います:switch-caseより速いですか、それとも仮想ディスパッチですか? a は分岐テーブルまたはジャンプ命令に最適化できると読みましたswitch-caseが、この場合は可能になると思います。