【发布时间】:2013-11-20 12:28:15
【问题描述】:
我有这样的代码:
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 以提高速度,同时保持 f 使用调试配置编译?
【问题讨论】:
-
你怎么知道不需要调试
g()? -
你可以使用
#pragma optimize指令。 -
@RowlandShaw:已经独立测试验证过,所以调试和f的开发无关,所以我只想把它当成一个优化的黑盒。
-
为什么要调试
f?你不能存根g并测试f吗? -
@doctorlove:存根可能是要走的路,至少从测试的角度来看是这样。这个问题更多来自对如何使用不同的编译配置(优化级别或其他)编译代码的不同部分的好奇心。正如 Alex 所说,我喜欢 #pragma 方法。
标签: c++ visual-studio debugging compiler-construction visual-studio-debugging