分岐予測ミスによる投機実行ペナルティを減らすために使う.
プログラムのアルゴリズムには影響を与えないため,ソースを読む際には無視して良い.
// Example
int i = 0;
while (1) {
i++;
if (unlikely(i > 100))
break;
}
上記の例では,ループを抜ける条件式のif ( unlikely(i > 100) )
が成り立つのは,101回の比較の中で1回のみである. よって,この場合はunlikelyがあった方がコンパイラは 最適化されたコードを生成する.はず.
// Reference
likely()-linux2.6 - LinuxKernelHackJapan
0 件のコメント:
コメントを投稿