C++ 中的可移植分支预测提示

Portable branch prediction hint in c++

本文关键字:分支预测 提示 可移植 C++      更新时间:2023-10-16

分支预测已经在StackOverflow上解决了几次。但是,我没有特别找到我正在寻找的答案。
在优化阶段,我需要避免分支错误预测。我有许多验证需要做。它看起来像:

if(!successCondition)
{ throw Something(); }

当然,在正常的预期工作流程中(大多数情况下都会发生),我们不会抛出异常,因此我们不会输入 if。

我知道在常见的 if/else 范式中,我们可以通过将最有可能的分支放在 if 中来提示编译器,而在 else 中放置不太可能的分支(可移植分支预测提示)。但我不希望(由于可读性)链接 ifs:

if(successCondition)
{ whatever(); }
else
{ throw Something(); }

因此,我知道编译器默认情况下会偏爱 if 中的条目,我会得到一个分支错误预测。

我知道 gcc 有一个特定的功能来优化代码,在 Linux 内核(分支感知编程)中调用不太可能。但它不是可移植的,我需要我的代码。

有没有办法在C++中保持可移植的正确分支预测?

C++20 很可能具有用于此目的的属性。(委员会草案仍在审查中。