if else vs java中的switch性能
我想知道使用if语句或switch之间是否存在任何效率差异。 例如:
if(){ //code } else if(){ //code } else{ //code }
我相信程序需要去检查所有if语句,即使第一个if语句是真的。
switch(i){ case 1: //code break; case 2: //code break;
但是在交换机中,有一个break命令。 我接近了吗? 如果没有,你能解释一下它们之间的效率差异吗?
Switch
性能优于if else
情况,因为在切换的情况下将进行一次性评估。 一旦它评估了交换机,它就知道需要执行哪种情况,但是如果是的if else
它必须在最坏的情况下通过所有条件。
列表条件越长,切换性能越好,但对于更短的列表(仅两个条件),它也可能更慢
从何为开关比如果更快
使用switch,JVM加载要比较的值并遍历值表以查找匹配,这在大多数情况下更快
Switch
速度更快。
想象一下,你在一个十字路口,有很多路径。 使用switch
,您可以在第一时间转到正确的路径。
使用if
,那么在找到合适的路径之前必须尝试所有路径。
尽可能使用switch
。
当然,对于电脑而言,这种差异非常小,你甚至都没有注意到。 但是,是的,你明白了。
我认为代码很清楚。 对于if,您必须逐个检查每个案例(在最坏的情况下,最后一次返回会返回结果)。 有了switch,有点像特殊的字节码检查并跳转到正确的case返回。 所以开关比if语句快一点。 但是,我认为我们需要关注我们实施的方式,以便于阅读。 在一些简单的例子中,if也是编写代码的选择。