通过Visual Studio诊断工具定位软件CPU瓶颈

通过VS诊断工具定位软件CPU瓶颈

前情提示:正常情况下我们使用调试模式会看不到诊断工具窗口,控制台会报“无法启动标准收集器。请尝试修复 Visual Studio 的安装。 (HRESULT: 0xe1110002)”这样的错误。

解决方式:通过[Downloads - Visual Studio Subscriptions Portal](https://my.visualstudio.com/Downloads?q=remote tools visual studio 2019) 链接下载对应的版本安装便可以解决。

下面我主要讲解我是如何通过VS诊断工具去定位代码中CPU占用过高的问题。

操作步骤:

1、将代码使用debug方式运行起来;

2、使用“诊断工具”中的“记录CPU配置文件”按钮记录操作软件CPU情况;

3、停止记录分析CPU的占用比例;

如下图:
通过Visual Studio诊断工具定位软件CPU瓶颈_第1张图片

上图可以清晰的看出除了"外部调用",opencv是占比最大的

通过代码(我们只需双击我们熟悉的接口就行)比如CaptureThread这里的采集线程接口;该接口主要通过使用UWP获取RGB中的视频流,我们双击便可获取到调用堆栈

通过Visual Studio诊断工具定位软件CPU瓶颈_第2张图片

这里有opencv调用的地方,虽是占比不高但通过阅读代码这里的是调用opencv最主要的入口;我通过分析代码发现在每次取出RGB数据帧时原始格式是NV12,需要使用opencv将NV12转成bgr格式供外部使用;外部一般只有流模式情况下才会使用bgr格式,其他时间这种转化是在浪费CPU。

故而,我优化我们代码逻辑,在流模式时进行转换,在非流模式时不转化,大大降低了非流模式(大部分时间)CPU的使用率。

效果如下:

通过Visual Studio诊断工具定位软件CPU瓶颈_第3张图片

非流模式下CPU占用非常的低,之前高占用的opencv也不见了。。。。

参考:分析性能探查器中的 CPU 使用情况 - Visual Studio (Windows) | Microsoft Learn

你可能感兴趣的:(Windows,opencv,microsoft)