c ++中的便携式分支预测提示

时间:2018-01-05 21:42:36

标签: c++ branch-prediction

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

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

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

我知道在常见的if / else范例中,我们可以通过将最可能的分支放在if中来暗示编译器,并且在else(Portable branch prediction hints)中不太可能。但我不想(因为可读性)链ifs:

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

因此,据我所知,编译器默认情况下会支持if中的条目,我会得到分支错误预测。

我知道gcc有一个特定的函数来优化代码,在Linux内核(Branch-aware programming)中不太可能调用它。但它不可移植,我需要我的代码。

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

1 个答案:

答案 0 :(得分:3)

C ++ 20,呃,可能attributes用于此目的。 (该论文的意图已获批准,但其措辞尚未完成。)