条件语句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程序的中断效率!提高中断效率的意义在于:同一个工程内出现多个中断时,比如线中断,定时器中断,串口接收中断等,可以最大程度的降低串口的丢包率。
点击数: 318    打印  添加到收藏   发布时间: 2020-09-13




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





» 相关内容
  格局
  Zemax13使用一段时间后闪退修..
  vs2010编译win32dll库函数关键..
  悉闻猫扑关闭发帖
  级数展开方式
  知否知否应是绿肥红瘦
  最苍白无力的
  又到了提现的月季
  来自火星的声音与RAM的必要性
  惊闻柠檬身价bao涨
  论思维的定势与短见
  樱一首· 抗疫专场
  三月十二植树节-累了就趴会
  原理设计的出发点
  新能源汽车Model3