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


本文记录了自己在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界面如上图。运行一段时间后,选择“停止分析”或者手动结束运行程序。得到下图所示的过程图。通过左键拖拽选择相关区间,点击右侧“查看筛选部分内容”,分析所选区间情况。
在这里插入图片描述

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.”

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值