【问题标题】:Using a likely/unlikely as argument of return in linux kernel在 Linux 内核中使用可能/不太可能作为返回参数
【发布时间】:2011-07-13 16:26:35
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: optimization linux-kernel built-in likely-unlikely


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-02-17
        • 2016-11-16
        • 1970-01-01
        • 2012-01-11
        • 2012-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多