gpt4 book ai didi

c++ - 确定 C++ 编译器是否会在 Visual Studio 中以某种方式进行优化

转载 作者:搜寻专家 更新时间:2023-10-31 01:34:42 28 4
gpt4 key购买 nike

在 Visual Studio 中,了解某个代码块是否会以某种方式优化的最简单方法是什么?

比如下面标记的那一行,就很有可能被优化掉。

int main(){
int a=3; //####
std::cout<<"1234"<<std::endl;
}

这可以通过设置一个断点来适度轻松地检查,它将是灰色的。

如果代码更复杂怎么办?

以下只是举例。
如果不用编译也能知道就完美了。

示例 1

int f1(){
return 3;
}
int main(){
int a=f1(); //#### likely to be in-line ?
std::cout<<a<<std::endl;
}

我如何确定 f() 是内联的?

示例 2

void f2(bool a){
if(a) std::cout<<"T"<<std::endl;
else std::cout<<"F"<<std::endl;
}
int main(){
f2(true);
f2(false);
}

我怎么知道 f2() 是否会通过拆分成 2 个这样的函数来优化:-

void f2_true(){         std::cout<<"T"<<std::endl;    }
void f2_false(){ std::cout<<"F"<<std::endl; }
int main(){
f2_true();
f2_false();
}

最佳答案

正如评论中多次提到的,预测优化没有用。然而,你可以让你的编译器给你一些他实际做了哪些优化的信息。例如,您可以将选项/Qvec-report:2 与至少级别 4 (/W4) 的警告一起使用,以获取有关代码矢量化的信息。 Microsoft webpage has detailed information关于如何解释此选项的输出。我发现此选项对于实现关键代码片段的并行化非常有用,它使性能提升高达 4 倍。

我想还有其他标志可以让编译器详细说明其他优化。

关于c++ - 确定 C++ 编译器是否会在 Visual Studio 中以某种方式进行优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38847204/

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