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

相关推荐
晨风先生8 小时前
如何Visual Studio 的配置从 Qt-Debug 切换到 x64-Debug
ide·qt·visual studio
工藤新一OL9 小时前
把xml的格式从utf-8-bom转为utf-8
xml·c#·asp.net·.netcore·visual studio
无规则ai2 天前
C#入门实战:数字计算与条件判断
c#·visual studio
布伦鸽3 天前
Visual Studio 2010-.Net Framework 4.0-DevExpress安装
ide·.net·visual studio
布伦鸽3 天前
Visual Studio 2010-.Net Framework 4.0项目-NPOI安装
ide·.net·visual studio
西柚小萌新3 天前
【软件与环境】--Visual Studio2022安装教程
ide·visual studio
无规则ai4 天前
C#的开发环境(visual studio的下载安装、测试c#语言)
开发语言·c#·visual studio
点云SLAM7 天前
Windows CMD(命令提示符)中最常用的命令汇总和实战示例
windows·microsoft·visual studio·powershell·cmd命令提示符·bat文件·win环境批处理
✎ ﹏梦醒͜ღ҉繁华落℘8 天前
Visual Studio编译WPF项目生成的文件介绍
hadoop·wpf·visual studio
oioihoii8 天前
Visual Studio C++编译器优化等级详解:配置、原理与编码实践
java·c++·visual studio