条件语句switch和if效率比较


对经典的C程序,判断条件常用的就是if,else 和switch case两大类,当判断条件较多,对程序运行效率有要求(运行时间尽可能短,比如MCU的中断环节)时,switch的高效率尤为明显,这一点从反编译出的汇编代码中可以看出,switch采用了空间换时间的思路,只计算一次值,就可以跳入条件中运行,if...else 是每个条件都要计算一遍,所以效率上,switch完胜。

但是对于变量取值范围来说,if else很方便,如if(t>3)...,其实switch也是有范围这个概念的,只不过一般情况下用的比较少。示例代码如下:

switch (true) {
  case (i <= 0):
     console.log("small");
     break;
  case( i > 0 && i <= 10):
      console.log("middle");
       break;
  default:
     console.log("really big");
}

-------------------------------或者采用另一种方式:

switch(buf) 
        {
            case '0' ... '9' :   val= val*16 + (buf-'0'); break;
            case 'a' ... 'f' :   val= val*16 + (buf-'a'+10); break;
            case 'A' ... 'F' :   val= val*16 + (buf-'A'+10); break;
            default :  err =1;  break;
        }   
如此,可以提高MCU程序的中断效率!提高中断效率的意义在于:同一个工程内出现多个中断时,比如线中断,定时器中断,串口接收中断等,可以最大程度的降低串口的丢包率。
点击数: 13    打印  添加到收藏   发布时间: 2020-09-13




上一篇:浅谈框架式编码
下一篇:引起疲劳的原因Get一下





» 相关内容
  引起疲劳的原因Get一下
  条件语句switch和if效率比较
  浅谈框架式编码
  信号发生器的DDS实现方式NCO
  有关旅行
  JIC文件与SOF文件运行不一致原..
  域名绑定到空间的方法
  承认不足究竟有多难
  手机
  情深不寿,慧极必伤
  BGA封装及焊接方法
  划痕的几种修复方法
  忘却的纪念
  GPRS和NB-IOT的特点及选用原则
  金菊茶的功效