if else vs java中的switch性能

Gök*_*ğan 5 java if-statement switch-statement

我想知道使用if语句或switch之间是否存在任何效率差异.例如:

if(){
//code
}
else if(){
//code
}
else{
//code
}
Run Code Online (Sandbox Code Playgroud)

我相信程序需要去检查所有if语句,即使第一个if语句是真的.

switch(i){

case 1:
//code
break;
case 2:
//code
break;
Run Code Online (Sandbox Code Playgroud)

但是在交换机中,有一个break命令.我接近了吗?如果没有,你能解释一下它们之间的效率差异吗?

M S*_*ach 5

Switch性能优于if else切换时的性能。一旦评估了开关,它就会知道需要执行哪种情况,但是在if else最坏的情况下必须经历所有情况。

列表条件越长,切换性能越好,但是对于较短的列表(仅两个条件),它也会变慢

为什么切换比如果更快

通过切换,JVM加载要比较的值并遍历值表以查找匹配项,这在大多数情况下更快

  • @ursa是正确的。在很多情况下,“switch”的性能不会优于“if/else”。“switch”增加了方法的大小,使其不太可能被内联。如果您知道最有可能采用哪些分支并且可以相应地构造它,那么“if/else”可能会表现得更好。使用“switch”也可能以微妙的方式影响分支预测。测试和测量。 (2认同)