Visual Studio2022 Profile 工具使用

本篇研究下Visual Studio自带的性能分析工具,针对C++代码,基于Visual Studio2022


文章目录


CPU使用率

对于CPU密集型程序,我们可以通过分析程序的CPU使用率,找到程序的瓶颈,Visual Studio原生提供了对于CPU使用情况的诊断工具,具体使用方法如下:

  1. 在 Visual Studio 里打开我们的程序,在我们想分析的函数/代码块的起始位置和结束位置打上断点,比如这里我们想分析的是 getSum() 这个函数。

  2. 调试状态下运行我们的程序,然后打开诊断工具 窗口(调试>窗口>显示诊断工具)

  3. 之后可以在诊断工具里,设置选择工具,选择是否查看 CPU使用率和内存使用

  4. 当程序运行到一个断点时,打开CPU 使用率下的记录 CPU 配置文件 ,之后就会开始记录CPU使用情况

  5. 继续执行我们的代码,然后程序运行到我们的第二个断点处,这是点开CPU使用率,就可以看到CPU使用率相关的信息了。

    (1)CPU 总计 :表示该函数函数体和调用的其他函数的总的CPU计数,及占比

    (2)自CPU :表示该函数函数体本身的CPU计数,及占比

    (3)排名靠前的函数 :按自CPU计数从大到小排列,这里 func1 函数自CPU 5152(99.52%)

    (4)热路径 :CPU计数最大部分的调用树,上面可以看到是 getSum 中调用了 func1

  6. 这里可以打开CPU 使用率的详细信息窗口,或者点击上面图中任意函数,导航到对应位置,这里视图默认显示是调用树,下面代码中会在左侧显示每一行代码的CPU计数。

  7. 我们可以选择视图为调用方/被调用方 ,选择对应的函数,当前函数就是我们选择的函数,可以看到调用函数 就是调用当前函数的函数,调用的函数 就是当前函数调用到的一些函数

  8. 也可以选择火焰图 视图


检测

上面的CPU使用率是通过采样的方式得到,定时去检查CPU的调用堆栈,好处是不会产生大的开销,而检测是通过工具将代码注入到可捕获计时信息的二进制文件中,或通过使用hook在应用程序运行期间收集和发出精确计时和调用计数信息。相对于采样的方式,检测方法开销较大,但检测可提供更确切的调用计数和精确计时。

Visual Studio也提供了原生的检测工具,但对C++程序只能进行静态检测,具体步骤如下:

  1. 首先编译好的目标文件,在链接时需要加上 -PROFILE 选项
  2. 调试 > 性能探查器,打开性能探查器
    .
  3. 首先选择目标,这里选择启动项目 ,也可以选择链接好的可执行文件,选择检测 选项,点击开始。
  4. 等程序运行结束或手动停止检测就会输出包含函数计时的报告
  5. 添加用户标记,这个功能目前还有问题,见下图,等修复好了更新

参考资料

通过分析 CPU 使用情况衡量应用程序性能(C#、Visual Basic、C++、F#)
了解探查器性能收集方法
在 Visual Studio(C#、C++、Visual Basic、F#)中检测 .NET 应用程序

相关推荐
进击的阿尔法猿7 小时前
visual studio生成动态库DLL
ide·visual studio
Qian丶Xi9 小时前
Visual Studio旧版直链
ide·visual studio
珊瑚里的鱼1 天前
第九讲 | 模板进阶
开发语言·c++·笔记·visualstudio·学习方法·visual studio
慢一点会很快2 天前
【FFmpeg】介绍+安装+VisualStudio配置FFMpeg库
ide·ffmpeg·visual studio
程序猿多布2 天前
使用Visual Studio将C#程序发布为.exe文件
c#·visual studio
半青年3 天前
华为鸿蒙电脑能否作为开发机?开发非鸿蒙应用?
ide·华为·编辑器·电脑·idea·harmonyos·visual studio
battlestar3 天前
Visual studio 打包方法
ide·visual studio
算法歌者3 天前
Visual Studio 项目 .gitignore 文件指南
git·visual studio
伐尘4 天前
【Qt】编译 Qt 5.15.x For Windows 基础教程 Visual Studio 2019 MSVC142 x64
windows·qt·visual studio
jiunian_cn4 天前
【c++】异常详解
java·开发语言·数据结构·c++·算法·visual studio