加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

if和switch的效率区别

(2018-07-31 10:59:29)
分类: c语言
if()
{
}
else if()
{
}
else if()
{
}
else
{
}


switch( num )
{
   case 1: xxxxx ;
   break;
case 2: xxxxx ;
   break;
case 3: xxxxx ;
   break;
case 4: xxxxx ;
   break;
case 5: xxxxx ;
   break;
case 6: xxxxx ;
   break;
}


if:
比较中规中矩,会一条一条的向下执行,直到条件满足,执行完函数体就结束;

switch:分俩种情况
1.当case语句数量<4 时,效率上和if语句基本一样

4.当case语句数量>=4时,case会有一个跳转表,存储着每个case和对应的跳转体的地址,效率明显比if效率高。




if语句的分支预测:

其对程序的分支流程进行预测, 然后预先读取其中一个分支的指令并解码来减少等待译码器的时间.应该是会将发生可能性比较大的提前读取出来,进行解码译码操作,节省时间。
  1. if (UNLIKELY(fd 0))  
  2.  
  3.       
  4.  
  5. else  
  6.  
  7.        
  8.  


  1. if (LIKELY(!err))  
  2.  
  3.       
  4.  
  5. else  
  6.  
  7.      
  8.  


LIKELY 作用是告诉编译器 x表达式更有可能是真的,也就是有很大的几率是运行if分支的。

UNLIKELY 作用是告诉编译器 x表达式更有可能是假的,也就是有很大的几率是运行else分支的。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有