switch 的性能比 if else 性能高很多吗?

switch 的性能比 if else 性能高很多吗?
我看到有很多地方switch直接取代了 if else

阅读 8.7k
4 个回答

首先,楼上说case只判断一次个人觉得不严谨,当你有多个case的时候,需要去判断每一个case啊!除非你传入的参数进了第一个case就是只判断一次,且你还需要在case中写上break,否则依然是每个都要去执行。

其次,if elseif 判断逻辑上跟swich case是一样的,在这一点上不存在谁更好。所以它们的性能是一样的,不信可以去google上看下。

最后,swicth 什么时候会有优势呢?
就是当使用函数结果作为判断依据的时候
看下面代码

switch(some_func()) {
    case 1: ... break;
    case 2: ... break;
}

if(some_func() == 1) {}
elseif(some_func() == 2) {}

补充说明下:上面代码 if else不是最佳实践,就跟我们在for循环中,循环条件用count一样。我们可以使用中间变量在前面做一个赋值操作。这样就不会每次去调函数,提升效率。

switch case,因为是直接跳转,只判断一次,if else if条件比较多的时候,可能会判断到最后一个才符合.简单来说就是switch case一次,if else if>=一次

要求:输入一个整数 n,如果 1<=n<=20 输出 n2,如果 21<=n<=50 输出 n3,如果 51<=n<=90 输出 n4,其他输出 n5。

好了,用 if else 实现和 switch 实现,看看谁的效率高。

性能是一样的。
至于有很多地方switch直接取代了 if else,是因为当很多条件的时候,switch流程控制看起来简洁很多。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题