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

相关推荐
咸鱼の猫6 小时前
Visual Studio在一个解决方案管理多项目属性
visual studio
深耕AI6 小时前
Visual Studio资源编译错误RC2104完全解决指南
ide·visual studio
arron88996 小时前
Visual Studio 2017(VS2017)可以编译 OpenCV 4.5.5 为 32 位(x86)版本
ide·opencv·visual studio
Xeon_CC16 小时前
打开多个Unity编辑器时使用Visual Studio调试,弹出选择Unity实例窗口,但是没有实例
unity·编辑器·visual studio·调试·unity 调试
张永清1 天前
每周读书与学习->JMeter主要元件详细介绍(一)配置元件
性能调优·jmeter性能测试·性能分析·每周读书与学习
adny-code1 天前
[fastgrind] 一个轻量级C++内存监控及可视化开源库
c++·内存·性能分析·高性能计算
iCxhust1 天前
Visual Studio 2022查看程序变量和堆栈
ide·visual studio
△曉風殘月〆1 天前
Visual Studio 命令和属性的常用宏定义(macros for MSBuild commands and properties)
ide·visual studio
楼田莉子2 天前
C++学习:异常及其处理
开发语言·c++·学习·visual studio
小龙报2 天前
《算法通关指南---C++编程篇(1)》
开发语言·c++·程序人生·算法·学习方法·visual studio