Java switch语句默认放置的效率

时间:2012-12-05 20:46:49

标签: java switch-statement

默认语句的放置会影响Java的效率吗?是否有区别:

switch (a) {
case 0: return 0;
case 1: default: return -1;
case 2: return 2
...
case 99: return 99;
}

VS

switch (a) {
case 0: return 0;
case 1: return -1;
case 2: return 2;
...
case 99: return 99;
default: return -1;
}

4 个答案:

答案 0 :(得分:2)

即使在最天真的实现中,这也不会产生性能上的差异,但是对于Java来说,你远离实际的机器代码,这将变成你绝对不应该尝试优化这个或任何其他类似的码。实际上,即使你编写了else-if s的最愚蠢的级联,你仍然仍然有机会将JIT转换为基于超高速哈希查找的机器代码。

答案 1 :(得分:2)

不,它不会有所作为。为什么?因此:JVM何时知道必须使用default正文?检查完所有其他情况后。因此,将default:放在不会改变效果的特定位置。

答案 2 :(得分:0)

如果您编写快速测试程序,我不相信您会看到任何显着的性能改进。至少没有任何理由可以掩盖你的代码。我只是将默认情况保留在列表的最后一位,以使代码更具可读性。它可能比性能的微观改进(如果有的话)更重要

答案 3 :(得分:0)

没有。除了调试注释之外,switch语句的位置对生成的字节代码没有任何影响。