小编slo*_*ile的帖子

我可以用我的代码改进分支预测吗?

这是一个对任何平台、语言或编译器都开放的天真的一般性问题。虽然我最好奇的是 Aarch64、C++、GCC。

当在依赖于 I/O 状态的程序流中编写不可避免的分支时(编译器无法预测),并且我知道一种状态比另一种状态更有可能,我如何向编译器表明这一点?

这是否更好

if(true == get(gpioVal))
    unlikelyFunction();
else
    likelyFunction();
Run Code Online (Sandbox Code Playgroud)

比这个?

if(true == get(gpioVal))
    likelyFunction(); // performance critical, fill prefetch caches from this branch
else
    unlikelyFunction(); // missed prediction not consequential on this branch
Run Code Online (Sandbox Code Playgroud)

如果通信协议使更有可能或临界值为真(高)或假(低),这是否有帮助?

c++ optimization gcc branch-prediction likely-unlikely

3
推荐指数
1
解决办法
2483
查看次数