使用VS对程序进行性能分析 -- 时间性能分析
使用VS对程序进行性能分析 -- 时间性能分析
转自:
https://blog.****.net/dugudaibo/article/details/85131446
在算法实现或者程序设计过程中,往往会遇到运行时间过长,需要加速运行速度的情况,这个时候就需要对程序的时间性能进行分析,找出耗时最长的部分或者相对较长的冗余部分,下面将以 VS2003 为例进行说明。
1.使用 VS2013 进行性能分析
首先,如下图所示,点击 VS2013 上方的 “分析” --> “性能和诊断”
之后弹出如下的界面,选择 “性能向导” – > 点击 “开始”
因为这里主要是针对速度方面的性能进行优化,所以选择下面 “检测”,然后点击 “下一步”。
之后如下所示就要选择你想分析的工程
然后在最后一个页面点击 “完成” 即可。
然后 VS 会执行你的代码,并进行一些分析,如果它要申请权限的话,当然要给它啊,要不你怎么让人家给你分析。之后需要等待 VS 分析完成就好。
2. 如何使用输出的分析文件
完成后,会显示如下的的样子,双击红框出的文件
之后选择下图中的 “函数详细信息(D)”
会显示出如下的图像,选择右上角百分之百那项。其中性能指标选择 “已用非独占时间百分比”,其中非独占样本数是指的包括了子函数执行时间的总执行时间 ;独占样本数是不包括子函数执行时间的函数体执行时间,函数执行本身花费的时间,不包括子(函数)树执行的时间。
之后在下图中选择 “main” 项
然后在下图中可以看到每一部分所占用时间从大到小的安排
这样就可以对找到时间消耗最多的部分并对其进行分析
3. 个人推荐的方法
此外我们还可以通过另一种更为直接的方法进行分析。在视图部分选择 “函数” 会得到如下的结果
这里将项目中所执行的所有函数按照消耗的时间从大到小进行排序,我们需要找出那些因为执行次数过多而耗费较多时间的程序,如果执行次数可以减少的话,会减少很多时间。关键就是要找到那些没必要的,执行很多次的,很耗费时间的函数,并且优化就好了。
比如说从下图中我们可以看到,函数 “cv::gpu::GpuMat” 被调用了多次,且耗费时间较长。
我们双击红框中最左边的 “cv::gpu::GpuMat”,会转跳到如下的界面
这张图表明我们在 “Process” 和 “main” 中多次用到 “cv::gpu::GpuMat”,所以接下来的任务就是找到在 “Process” 哪个地方使用了 “cv::gpu::GpuMat”,以及是否合理,如果不合理就可以进行优化。同样也可以在 “main” 中做一样的操作。