C++ 中的可移植分支预测提示
Portable branch prediction hint in c++
分支预测已经在StackOverflow上解决了几次。但是,我没有特别找到我正在寻找的答案。
在优化阶段,我需要避免分支错误预测。我有许多验证需要做。它看起来像:
if(!successCondition)
{ throw Something(); }
当然,在正常的预期工作流程中(大多数情况下都会发生),我们不会抛出异常,因此我们不会输入 if。
我知道在常见的 if/else 范式中,我们可以通过将最有可能的分支放在 if 中来提示编译器,而在 else 中放置不太可能的分支(可移植分支预测提示)。但我不希望(由于可读性)链接 ifs:
if(successCondition)
{ whatever(); }
else
{ throw Something(); }
因此,我知道编译器默认情况下会偏爱 if 中的条目,我会得到一个分支错误预测。
我知道 gcc 有一个特定的功能来优化代码,在 Linux 内核(分支感知编程)中调用不太可能。但它不是可移植的,我需要我的代码。
有没有办法在C++中保持可移植的正确分支预测?
C++20 很可能具有用于此目的的属性。(委员会草案仍在审查中。
相关文章:
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- std::shared_ptr vs std::make_shared:意外的缓存未命中和分支预测
- 如何禁用分支预测C++/Mac/英特尔
- 这种方法是否对分支的预测产生了影响
- C++ 中的可移植分支预测提示
- 常量条件的分支预测
- 分支预测和分支目标预测之间的性能差异
- 分支预测与分支目标预测
- 分支预测优化
- 分支预测的加速是否取决于谓词的复杂性?
- 我可以在现代英特尔酷睿CPU上测量分支预测故障吗
- 分支预测变量结果是否在流程使用其时间片后保存
- 分支预测 - 全球份额实施说明
- 为什么我不是分支预测的受害者
- 函数指针上的分支预测
- 分支预测及分支目标预测优化
- 分支预测与除零
- c++分支预测算法比较
- 是否有可能帮助分支预测
- 编译器有一定的优化启发式来支持分支预测吗?如果没有,为什么没有呢?