首页 > 编程知识 正文

空语句,如何用if语句判断条件

时间:2023-05-05 00:35:55 阅读:153600 作者:1811

阅读内核代码时,有时会看到likely ()和unlikely () )的判断语句,为什么要使用它们呢? 它们的区别是什么?

首先,明确了if(likely ) value )与if ) value )等价

if (unlikely value ) )也等效于if (value )

也就是说likely ()和unlikely () )从阅读和理解代码的角度来看是一样的!

这两个宏在内核中定义如下: #definelikely(x ) _builtin_expect ) ) x ),1 )。

#defineunlikely(x ) _builtin_expect ) ((x ),0 ) ) ) ) ) ) ) ) ) ) ) ) ) )。)

__builtin_expect () )由gcc(version=2.96 )提供给程序员,旨在为编译器提供“分支过渡”信息。 这样,编译器就可以优化代码,以减少由指令跳转导致的性能下降。

__builtin_expect((x ),1 )表示x的值为真的可能性更高;

__builtin_expect((x ),0 )表示x的值为假的可能性更高。

也就是说,使用 likely() ,执行 if 后面的语句 的机会更大,使用unlikely(),执行else 后面的语句的机会更大。

例如,在下面的代码中,作者认为prev很可能不等于next

likely (prev!=next () }

next-timestamp=now;

.

}else{

.

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。