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++ - 在声明或实现中延迟初始化 C++ 单例

visual-c++ - 如何在mfc中不使用outlook创建 ".msg"文件?

c++ - SSL/TLS 协议(protocol)版本回退机制

c++ - 从 C++ 中的文本框中复制文本

c++ - 我对等式测试 bool 运算符有疑问

c++ - 非默认构建的 boost::proto 终端

c++ - 在编译时拆分字符串会在不同的编译器上产生不同的结果

c++ - 修复由于 OpenSSL 中的 SIGILL 而导致的崩溃

linux - 将 VC++ SetWaitableTimer 移植到 gcc

visual-c++ - Visual Studio 2013 std::mutex 和可怕的 Windows 加载器锁