Emi*_* D. 5 c++ branch-prediction
在StackOverflow上已经解决了两次分支预测的问题。但是,我没有找到想要的答案。
在优化阶段,我需要避免分支预测错误。我需要做一些验证。看起来像:
if(!successCondition)
{ throw Something(); }
Run Code Online (Sandbox Code Playgroud)
当然,在大多数情况下会发生的正常预期工作流中,我们不会抛出异常,因此也不会输入if。
我知道,在常见的if / else范例中,我们可以通过将最可能的分支放在if中,而将不太可能的分支放在else中来提示编译器(Portable分支预测提示)。但是我不想(由于可读性)链接ifs:
if(successCondition)
{ whatever(); }
else
{ throw Something(); }
Run Code Online (Sandbox Code Playgroud)
因此,我了解到,默认情况下,编译器将支持if中的条目,并且我会得到分支预测错误。
我知道gcc具有优化代码的特定功能,这在Linux内核中不太可能被调用(支持分支的编程)。但这不是可移植的,我需要编写代码。
有没有办法在C ++中具有可移植的正确分支预测?
归档时间: |
|
查看次数: |
955 次 |
最近记录: |