VS中“性能探测器”的使用

VS中性能探测器工具使用记录

  • 0. 参考内容
  • 1. 启动
  • 2. 具体分析
  • 3. 总结
  • 4.TroubleShooting

本文记录了自己在vs中使用性能探测器的一些总结,主要用作个人记录。转载请注明出处。

0. 参考内容

微软官方相关概述:https://docs.microsoft.com/zh-cn/previous-versions/visualstudio/visual-studio-2008/bb385770(v=vs.90)

1. 启动

点击VS菜单栏中“分析”,选择“性能探测器”。或Alt+F2。进入如下界面。

性能探测器可以选择检测本工程的,或者其他生成的exe文件。这里以其它可执行文件为例。

选择“可执行文件”,下一步后选择exe文件路径。并开始运行。
VS中“性能探测器”的使用_第1张图片
运行时,vs界面如上图。运行一段时间后,选择“停止分析”或者手动结束运行程序。得到下图所示的过程图。通过左键拖拽选择相关区间,点击右侧“查看筛选部分内容”,分析所选区间情况。

2. 具体分析

在窗口上方的“当前视图”中,可以选择类型。

首先选择“函数”,可以得到下图所示:
VS中“性能探测器”的使用_第2张图片
可以看到主要有两个评价指标:“非独占样本”与“独占样本”。这两个可以简单理解成:当前完整的函数所占用的资源(非独占),与当前函数中除调用的子函数外,占用的资源(独占)。从上图可以看出,main函数中占用了运行过程中几乎全部样本(98%),但独占样本为0,因为我代码中的main直接调用了process函数执行全部工作。同时从图中发现,[libdmtx.dll]独占样本最多,表示这个自己占用了较大资源。
下面双击main函数,跳转到“函数详细信息”窗口。窗口中显示了函数调用关系,以及内部调用函数所占百分比,同时下方代码标出了占用资源较多的行所占比例,自动红色高亮,占用越多颜色越深。
可以通过点击“调用函数”以及“已调用函数”查看内部细节。
最终不断深入,找到占用最多的代码。上图可见,744行占用了总共46.1%的资源。如果需要进行优化,首先就解决这一行。

3. 总结

合理利用性能探测器可以方便优化。
我如果早点儿知道这个东西,就不用到处cout时间,甚至用全局变量累积每一步的时间了。
希望对别人也能有所帮助。

4.TroubleShooting

由于中文参考资料较少,故需要进行英文搜索。中英文对应关系如下:
中英文对应。性能探测器:Performance Explorer

Bug1:
无效的报告:文件中的数据已损坏或格式不受支持。
Invalid report: the data in the file is corrupt or has an unsupported format".
解决办法:
未解决。疑似vs版本问题bug。
https://stackoverflow.com/questions/53744449/performance-profiling-not-generating-reports-in-vs2013

Bug2:
'2333’不是有效的进程ID。
‘2333’ is not a valid Process ID。
解决办法:
https://stackoverflow.com/questions/16370013/profiling-in-vs-2012
“This will happen when your program quits too soon, before the profiler had a chance to collect any samples. Perhaps somewhat typical when you kick the tires to see how it works but haven’t written any real code yet that can be profiled in a meaningful way.
For very short programs with little actual code, be sure to change the profiling mode. Use Analyze + Performance Wizard and switch from “sampling” to “instrumentation” mode. Instrumentation mode slows down the program a great deal but is a lot more accurate for very short programs.”

你可能感兴趣的:(软件与库,visual,studio,C++)