c++ - 仅为单个函数/文件启用编译器优化

标签 c++ visual-c++

我正在 Visual Studio 2012 环境中编写 C++ 代码。 代码库不是很大(包含在大约 10-12 个源文件中)。我项目中某些函数的执行时间很长(例如 REL 模式下 10 秒,DEBUG 模式下 50 秒)

现在,在调试时,我经常需要查看在我的应用程序生命周期结束时执行的函数。有没有办法仅针对我的项目中的特定函数和/或文件禁用编译器优化。 这将使我能够优化一些计算量大的函数的执行

注意:我之前错误地提到了“调试符号”而不是“编译器优化”。我基本上是在问这个问题 w.r.t.编译器优化,因此在使用断点进行调试时检查变量值变得困难。

最佳答案

您可以在属性->C/C++->优化对话框中为特定文件打开或关闭优化。这与您将用于整个项目的对话框相同,但每个文件的设置将覆盖项目设置。

如果您愿意,您还可以使用 #pragma optimize( "", off )#pragma optimize( "", on ) 围绕特定函数或代码区域这样做。

无论哪种方式,您都希望为整个程序生成调试符号。将它们放在那里不会减慢任何速度,并且允许您根据需要调试优化的代码。这更加困难,因为局部变量等在监 window 口中通常不正确,行号可能不完全对齐,但在它和反汇编 View 之间,您通常可以分辨出发生了什么。

关于c++ - 仅为单个函数/文件启用编译器优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16515165/

相关文章:

c++ - 恢复调试 session 不构建更改 VS2012

c++ - 通过脚本将项目添加到 Visual Studio C++ 解决方案

c++ - MSVC 的虚方法崩溃

c++ - 如何查明第三方是否杀死或破坏了 C++ 程序

c++ - Float、Double、Char、C++ 错误。怎么了?

c++ - 各种形式的 getline()

C++如何将unicode字符转换为int

c++ - std::complex in struct 使编译变慢

C++ AttachConsole 包含错误

c++ - 从 gsl_matrix 中删除列