0

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

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

当我进行分析时,我发现这些 IO 操作花费了大部分时间,当然我关心的是发布版本的实际运行时间。我可以做些什么来获得发布版本的更准确结果,而不是手动删除这些 DEBUG 宏?

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

4

2 回答 2

3

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

于 2012-05-31T22:07:28.197 回答
0

我将问题分为两部分,时间的整体测量,然后得到百分比。整体测量很简单——给它足够的工作至少需要几秒钟,然后就可以计时了。如有必要,只需循环 10 或 1000 次。

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

于 2012-06-01T00:21:53.107 回答