支声明
对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏,比如likely()和unlikely(),这样使用起来比较方便。
例如,下面是一个条件选择语句:
if (foo) {
/* .. */
}
如果想要把这个选择标记成绝少发生的分支:
/* 我们认为foo绝大多数时间都会为0.. */
if (unlikely(foo)) {
/* .. */
}
相反,如果我们想把一个分支标记为通常为真的选择:
/* 我们认为foo通常都不会为0 */
if (likely(foo)) {
/* .. */
}
对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏,比如likely()和unlikely(),这样使用起来比较方便。
例如,下面是一个条件选择语句:
if (foo) {
/* .. */
}
如果想要把这个选择标记成绝少发生的分支:
/* 我们认为foo绝大多数时间都会为0.. */
if (unlikely(foo)) {
/* .. */
}
相反,如果我们想把一个分支标记为通常为真的选择:
/* 我们认为foo通常都不会为0 */
if (likely(foo)) {
/* .. */
}