2

在 Java 中放置 default 语句会影响效率吗?有没有区别:

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

对比

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

4 回答 4

2

即使在最幼稚的实现中,这也不会产生性能差异,但是对于 Java,您与实际的机器代码相去甚远,这将变成您绝对不应该尝试优化此代码或任何其他类似代码。事实上,即使你编写了最愚蠢的else-ifs 级联,你仍然有很大的机会将 JIT 变成一个超快的基于哈希查找的机器代码。

于 2012-12-05T20:49:13.253 回答
2

不,这不会有什么不同。为什么?因为这个:JVM什么时候知道它必须使用defaultbody?在它检查了所有其他情况之后。因此,放置default:在特定位置不会改变性能。

于 2012-12-05T20:52:08.803 回答
0

如果您编写了一个快速测试程序,我认为您不会看到任何显着的性能改进。至少没有一个可以证明掩盖您的代码是合理的。我只是将默认大小写整齐地放在列表的最后,以使代码更具可读性。它可能比性能的微小改进更重要(如果有的话)

于 2012-12-05T20:51:03.007 回答
0

不会。switch 语句的位置对生成的字节码没有影响,除了调试注释。

于 2012-12-05T20:52:15.183 回答