chr*_*irk 8 c c++ gcc if-statement branch-prediction
X几乎99.9%的时间都是真的,但我也需要处理Y和Z. 虽然X条件的主体是空的,但我认为如果省略X条件,它应该比检查2个其他条件Y和Z更快.你怎么看?
if (likely(X))
{
}
else if (unlikely(Y))
{
...
}
else if (unlikely(Z))
{
...
}
Run Code Online (Sandbox Code Playgroud)
log*_*og0 11
您可能想知道在使用可能或不太可能时会发生什么:http:
//kerneltrap.org/node/4705
我个人会写
if (unlikely(!X))
{
if (unlikely(Y))
{
...
}
else if (unlikely(Z))
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
这意味着,如果x
继续执行,否则跳转到body.
像往常一样,当有疑问时; 无论如何,如果我阅读那段代码,我会发现更清楚的东西:
if (!likely(X))
{
if (unlikely(Y))
{
...
}
else if (unlikely(Z))
{
...
}
}
Run Code Online (Sandbox Code Playgroud)