这是一个对任何平台、语言或编译器都开放的天真的一般性问题。虽然我最好奇的是 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)
如果通信协议使更有可能或临界值为真(高)或假(低),这是否有帮助?