7

Linuxカーネルでこの構造を見るだけで、それが何を意味するのかわかりません。

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

私はlikely/がここで説明されている機能 unlikelyで作られていることを知っています: http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html__builtin_expect

__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 に答える