7

只是在linux内核中看到这个结构,我不明白这是什么意思。

110         return unlikely(sl->sequence != start);

我知道likely/unlikely是用__builtin_expect这里描述的功能制成的:http: //gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

您可以使用 __builtin_expect 为编译器提供分支预测信息。

但是无条件分支可能有什么样的分支预测提示?

4

2 回答 2

11

只是在这里猜测,但想象函数是由编译器内联的,你在调用代码中有这个:

if (functionUsingUnlikelyForReturn()) {
   // Do something
} else {
   // Do something different
}

那么分支预测注意到提示是完全合理的。

于 2011-03-11T17:52:44.157 回答
4

“不太可能”并没有给出从函数返回的可能性,而是返回值的预期值。我的猜测是该函数是可内联的,因此这是优化函数调用者的提示。

于 2011-03-11T18:04:30.917 回答