调试信息会影响分析结果c ++

时间:2012-05-31 21:58:28

标签: c++ visual-studio compiler-construction profiling

我正在使用IBM Quantify来尝试比较我程序中不同函数调用的运行时间,但令人头疼的是很多函数调用都有DEBUG宏输出这样的东西,

#ifdef DEBUG
cout << "Value is "<< value << endl;
#endif

当我进行性能分析时,我发现这些IO操作占用了大部分时间,当然我关心的是发布版本的实际运行时间。有什么办法可以为发布的版本获取更准确的结果而不是手动删除这些DEBUG宏吗?

我正在使用Visual Studio编译器在调试模式下构建代码,当我使用-o选项构建它时,无法运行以进行分析,说明没有可用的调试信息。

2 个答案:

答案 0 :(得分:3)

您肯定希望使用发布版本进行性能分析。您可以修改项目设置,以便为发布版本发布PDB。

答案 1 :(得分:0)

我将问题分为两部分,即时间的总体测量,然后获得百分比。 整体测量很简单 - 给它足够的工作至少需要几秒钟,然后再计时。如果需要,只需循环10或1000次。

然后获得百分比,当它正在运行时,捕获一些叠加。您可以使用堆栈抓取器或只是使用暂停按钮(重复)点击它并复制粘贴调用堆栈。 函数处于活动状态的时间百分比是它在堆栈上的时间百分比,大致是包含它的堆栈跟踪的百分比。 这并没有告诉你只占很小比例的功能,但改变这些功能不会为你节省太多。