if和switch的效率区别
(2018-07-31 10:59:29)| 分类: c语言 |
if()
{
}
else if()
{
}
else if()
{
}
else
{
}
switch( num )
{
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语句的分支预测:
其对程序的分支流程进行预测,
然后预先读取其中一个分支的指令并解码来减少等待译码器的时间.应该是会将发生可能性比较大的提前读取出来,进行解码译码操作,节省时间。
- if
(UNLIKELY(fd < 0)) - {
-
- }
- else
- {
-
- }
- if
(LIKELY(!err)) - {
-
- }
- else
- {
-
- }
LIKELY 作用是告诉编译器 x表达式更有可能是真的,也就是有很大的几率是运行if分支的。
UNLIKELY 作用是告诉编译器 x表达式更有可能是假的,也就是有很大的几率是运行else分支的。
前一篇:TCP/IP中的异常关闭
后一篇:对应查询的理解之where

加载中…