gpt4 book ai didi

c++ - 如何提示 Visual C++ 编译器优化器不太可能执行 if 语句的特定分支?

转载 作者:IT老高 更新时间:2023-10-28 22:04:50 24 4
gpt4 key购买 nike

我们有一个用于错误检查的宏,如下所示:

#define CheckCondition( x ) \
if( x ) { \
//okay, do nothing \
} else { \
CallFunctionThatThrowsException(); \
}

通常条件必须为 true,我们希望 CPU 分支预测始终选择这条路径,如果它恰好是 false,我们不这样做'真的不在乎预测错误 - 抛出异常和大量堆栈展开无论如何都会花费一大笔钱。

根据 CPU 核心描述,分支预测将处理前向跳转和后向跳转略有不同(例如总是执行后向跳转而从不执行前向跳转),编译器可以通过生成正确的代码来改进分支预测提示 CPU 分支预测器。

gcc 好像有 likely and unlikely hints为了那个原因。 Visual C++ 中有类似的东西吗?可以__assume keyword用于那个?

最佳答案

不幸的是,根据 their developer center,不在 MSVC 中.

这非常令人沮丧,因为我们希望在等效的 GCC 内在循环中为我们节省了关键的几微秒内循环的情况下使用它,但我们能得到的最接近的方法是交换 if 和 else 子句,所以更可能的情况是前向跳转未采取分支。

关于c++ - 如何提示 Visual C++ 编译器优化器不太可能执行 if 语句的特定分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5075164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com