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 应用程序

相关推荐
时光追逐者3 小时前
Visual Studio使用GitHub Copilot提高.NET开发工作效率
c#·github·.net·copilot·ai编程·微软技术·visual studio
涛ing2 天前
31. C语言 命令行参数
linux·c语言·开发语言·c++·vscode·vim·visual studio
打破砂锅问到底0073 天前
技术周总结 01.13~01.19 周日(Spring Visual Studio git)
git·spring·visual studio
这是我583 天前
链表的介绍
数据结构·c++·其他·链表·visual studio·介绍·图文结合
涛ing3 天前
29. C语言 可变参数详解
linux·服务器·c语言·c++·windows·vscode·visual studio
Eiceblue4 天前
C# 添加、替换、提取、或删除Excel中的图片
开发语言·c#·excel·visual studio
涟幽5165 天前
Microsoft Visual Studio 2022 主题修改(补充)
ide·microsoft·visual studio
编程砖家5 天前
通过visual studio生成与查看汇编代码
汇编·c++·visual studio·生成汇编指令
__雨夜星辰__5 天前
C++ 线程安全之互斥锁
开发语言·c++·笔记·学习·多线程·visual studio
四念处茫茫5 天前
【C语言系列】深入理解指针(4)
c语言·开发语言·visual studio