Visual Studio中的条件优化

Conditional optimization in Visual Studio

本文关键字:条件 优化 Studio Visual      更新时间:2023-10-16

我有一个这样的代码:

void f()
{
  //Some function I want to debug
  g();
  //More code
}
void g()
{
  //A very slow function I want to have optimized for performance
  //No debugging this code
}

其中f是我代码中要调试的任何函数,而g则是计算密集型函数。

当我使用Release配置编译代码时,两段代码都会得到优化,并且都会在合理的时间内运行,但当我使用Debug设置编译时,g执行时间太长,因为编译器没有优化代码以保持对调试器友好。

从调试的角度来看,我不需要处理g,也无法将其提取到预编译的模块中(它正在积极开发中,需要保持最新)。它们在不同的文件中定义。

有没有一种方法可以告诉Visual Studio编译g以提高速度,同时使用Debug配置保持编译f

您可以将f移动到另一个编译单元,例如另一个文件或#pragma optimize。后者可能是更好的选择,因为与更改特定文件的编译设置相比,忘记设置更难,因为您必须记住要返回并重置特定文件。

或者,您可以在调试模式下进行评测,看看发生了什么。由于VS Premium及以上版本包括这些工具,所以不应该太难,或者您可以使用第三方工具。分析通常能很好地了解任何放缓的真正原因。