我知道“在你的应用程序中测试它”是必须的。尽管如此,我也想要求一个分析的见解。
我有一个应用内指令队列(作为一个Array
),它的元素是按顺序处理的。细节无关紧要。(将“指令”视为虚拟指令,即仅根据我的应用程序对其进行解释——就像一个小型内部虚拟机)。
实际的问题是:处理队列元素哪个更快——Java 提供的虚拟调度,还是switch-case
?
在第一种情况下,
Array
由一个自己的对象的后代组成Operation
(或者只是Runnable
——你明白了)。在这种情况下,指令执行只是调用Operation.run()
对象的覆盖。虚拟调度将完成其余的工作——run()
将调用具体实例的。这
Array
是一个原始int
数组,每个元素都是一个指令代码,它来自一个连续的范围(例如,int
介于 0..65535 之间)。指令处理意味着指令代码被解释:(A)通过switch-case
语句,或(B)通过使用由指令代码直接索引的Array
(对象)。Operation
在第二种情况下,我想switch-case
现在已经足够优化(特别是因为我使用的是连续范围),所以我们可以忘记这个Array
选项。
总结一下,哪个更快?将解释代码添加到 的分支switch-case
,还是使用虚拟调度?
我想它可以分解为:switch-case
更快还是虚拟调度?我读到 aswitch-case
可以优化为分支表或跳转指令,我想在这种情况下这是可能的。