首页 > 其他 > 详细

if-else 和 switch 语句优化

时间:2021-01-24 14:24:38      阅读:22      评论:0      收藏:0      [点我收藏+]

if-else 对比 switch

  条件数量越大,越频向于使用 switch 而不是 if-else。

  条件较少时 if-else 更易读,相反 switch 更易读

优化 if-else

  目标:最小化到达正确分支前所有需要的判单条件数量,最简单的方法确保最可能出现的条件放在首位。

  例如:

    if(value<5){

      //代码处理

    }else if(value >5 && value<10){

    }else{

    }

  if-else 中的条件语句应该总是按照从最大概率到最小概率的顺序排列,以确保运行速度最快。

  将if-else 组成一系列嵌套的if-else 语句。

  例如如下代码:

if (vlaue === 0) {
  return return0;
} else if (value === 1) {
  return return1;
} else if (value === 2) {
  return return2;
} else if (value === 3) {
  return return3;
} else if (value === 4) {
  return return4;
} else if (value === 5) {
  return return5;
} else if (value === 6) {
  return return6;
} else if (value === 7) {
  return return7;
} else if (value === 8) {
  return return8;
} else if (value === 9) {
  return return9;
} else {
  return return10;
}

  以上条件语句最多要判断10次。假设 value 的值在 0 到 10 之间均匀分布,会增加平均运行时间。

优化之后的代码:

if (value < 6) {
  if (value < 3) {
    if (vlaue === 0) {
      return return0;
    } else if (value === 1) {
      return return1;
    } else {
      return return2;
    }
  } else {
    if (value === 3) {
      return return3;
    } else if (value === 4) {
      return return4;
    } else {
      return return5;
    }
  }
} else {
    if(value<8){
        if (value === 6) {
            return return6;
          } else {
            return return7;
          }
    }else{
        if (value === 8) {
            return return8;
          } else if(value===9) {
            return return9;
          }else{
            return return10;
          }
    }
}

优化之后的代码使用 二分法把值域分成一系列的区间,然后逐步缩小范围。代码运行的平均时间大约是前面列子的一半。

 

if-else 和 switch 语句优化

原文:https://www.cnblogs.com/hq2020/p/14320669.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!