if else vs java 中的 switch 性能
if else vs switch performance in java
我想知道使用 if 语句或 switch 在效率上是否存在差异。例如:
if(){
//code
}
else if(){
//code
}
else{
//code
}
我认为程序需要检查所有 if 语句,即使第一个 if 语句为真。
switch(i){
case 1:
//code
break;
case 2:
//code
break;
但是在switch中,有一个break命令。我的靠近对吗?如果不是,你能解释一下它们之间的效率差异吗?
Switch
perf 优于 if else
因为在切换的情况下会有一次评估。一旦它评估了开关,它就知道需要执行哪种情况,但是在 if else
的情况下,它必须经历所有条件以防最坏的情况。
列表条件越长,切换性能越好,但对于较短的列表(只有两个条件),它也可能更慢
来自Why switch is faster than if
With switch the JVM loads the value to compare and iterates through
the value table to find a match, which is faster in most cases
我觉得代码写的很清楚了。使用 if 时,您必须逐个检查每个案例(在最坏的情况下,最后一个 return 会返回结果)。使用 switch,某种类似于特殊字节代码检查并跳转到 return 的正确大小写。所以 switch 比 if 语句快一点。但是,我认为我们需要关注我们实现的方式,以便于阅读。在一些简单的情况下,if也是写代码的一种选择。
Switch
更快。
假设您在一个十字路口,有很多条路。
有了switch
,你第一时间就走对了路
使用if
,那么你必须尝试所有的路径才能找到正确的路径。
尽可能使用 switch
。
当然,对于计算机来说,这种差异非常小,您甚至不会注意到。但是,是的,你明白了。
我想知道使用 if 语句或 switch 在效率上是否存在差异。例如:
if(){
//code
}
else if(){
//code
}
else{
//code
}
我认为程序需要检查所有 if 语句,即使第一个 if 语句为真。
switch(i){
case 1:
//code
break;
case 2:
//code
break;
但是在switch中,有一个break命令。我的靠近对吗?如果不是,你能解释一下它们之间的效率差异吗?
Switch
perf 优于 if else
因为在切换的情况下会有一次评估。一旦它评估了开关,它就知道需要执行哪种情况,但是在 if else
的情况下,它必须经历所有条件以防最坏的情况。
列表条件越长,切换性能越好,但对于较短的列表(只有两个条件),它也可能更慢
来自Why switch is faster than if
With switch the JVM loads the value to compare and iterates through the value table to find a match, which is faster in most cases
我觉得代码写的很清楚了。使用 if 时,您必须逐个检查每个案例(在最坏的情况下,最后一个 return 会返回结果)。使用 switch,某种类似于特殊字节代码检查并跳转到 return 的正确大小写。所以 switch 比 if 语句快一点。但是,我认为我们需要关注我们实现的方式,以便于阅读。在一些简单的情况下,if也是写代码的一种选择。
Switch
更快。
假设您在一个十字路口,有很多条路。
有了switch
,你第一时间就走对了路
使用if
,那么你必须尝试所有的路径才能找到正确的路径。
尽可能使用 switch
。
当然,对于计算机来说,这种差异非常小,您甚至不会注意到。但是,是的,你明白了。