我应使用哪种性能工具? (C#、Visual Basic、C++、F#)

Visual Studio 提供了各种分析工具,可帮助你根据应用类型诊断不同类型的应用性能问题。 在本文中,我们将提供信息,帮助你找到适合你的方案和应用程序类型的工具。

有关使用分析工具优化代码的一般方法,请参阅 案例研究:优化代码初学者指南。

我应使用哪种工具?

下表列出了 Visual Studio 提供的不同工具,并提供用于选择该工具的常见方案。

性能工具 描述 何时使用该工具?
CPU 使用率 显示 CPU 花费时间的位置。 • 开始调查常规性能问题。
• 调查高服务器 CPU 使用率。
• 调查 DevOps 方案,例如当订单未通过零售网站时。
• 优化 CPU 使用率。
• 调查 API 调用中的延迟。
火焰图 在 CPU 使用率工具中查看,该工具提供调用树的备用可视化效果。 调查 API 调用中的延迟
热路径 在 CPU 使用率工具中查看,该工具显示应用程序耗用大部分 CPU 时间的位置。 调查 API 调用中的延迟
内存使用情况 显示应用的内存,以查找内存泄漏等问题。 • 优化内存使用情况
• 调查 UI 冻结
• 调查可疑内存泄漏(本机代码)
.NET 对象分配 显示分配 .NET 对象的位置以及有关垃圾回收的信息。 • 优化 .NET 内存使用情况
• 分析垃圾回收
检测 显示确切的呼叫计数和呼叫时间。 • 你需要“CPU 使用率”这样的工具,但你想要知道在函数中耗费的确切调用计数和时间(基于时钟时间)
• 你想要看到阻塞时间,例如等待锁定的时间。
• 注意:该工具需要额外的开销。
文件输入/输出 显示文件 I/O 操作以及它们花费的时间以及处理的数据量。 调查用户界面冻结
性能提示 显示与代码交互时性能信息的快速度量。 调试时,需要查看上一步操作(或断点)与当前步骤或断点之间的已用时间。
事件查看器 显示 HTTP 请求、日志消息和异常。 • 调查 API 调用
中的延迟 • 调查远程 Web 服务器上运行缓慢的应用程序
.NET Async 显示 .NET 应用中的异步/等待使用情况。 调查异步代码的可疑性能问题。
.NET 计数器 .NET 计数器的实时报告。 • 开始调查常规性能问题。
• 需要跟踪基于 .NET 计数器的指标,例如每秒异常、垃圾回收和 CPU 使用率。
数据库 显示数据库查询的性能。 调查使用 ADO.NET 或 Entity Framework Core 的数据库查询的性能。
GPU 使用情况 显示 Direct3D 应用的高级硬件使用情况。 检查应用的性能是 CPU 绑定还是 GPU 绑定。
应用程序时间线 显示 XAML 应用的 UI 性能。 调查 XAML 应用中的 UI 性能,例如渲染帧所用的时间。
IntelliTrace 调试器工具,可用于记录事件并在各种执行点检查应用程序状态。 你需要一个工具在各种点检查应用程序状态,而不仅仅是当前应用程序状态。

我的项目支持哪些工具?

下表列出了 Visual Studio 产品/服务的不同工具以及可用于它们的不同项目类型:

性能工具 .NET C/C++ UWP(通用Windows平台) ASP.NET/ASP.NET Core
CPU 使用率 是的 是的 是的 是的
内存使用情况 是的 是的 是的 是的
.NET 对象分配 是的 是的 是的
检测 是的 是的 是的 是的
文件输入/输出 是的 是的 是的 是的
性能提示 是的 是的 是的 是的
事件查看器 是的 是的 是的 是的
.NET Async 是的 是的 是的
.NET 计数器 是 (.NET Core/5+ 仅限) 是(仅限 ASP.NET 核心)
数据库 是 (.NET Core/5+ 仅限) 是(仅限 ASP.NET 核心)
GPU 使用情况 是的 是的 是的
应用程序时间线 是(XAML) 是的
性能资源管理器
IntelliTrace 仅适用于带有 Visual Studio Enterprise 的 .NET 仅适用于带有 Visual Studio Enterprise 的 .NET 仅适用于带有 Visual Studio Enterprise 的 .NET

对 CMake 项目的支持与C++相同。 但是,必须选择“可执行文件”作为启动项目,将可执行文件设置为性能探查器(Alt + F2)中的目标。

Linux 支持哪些工具?

以下工具在 Linux、WSL 和 Windows 作为目标平台时均受支持:

  • CPU 使用率
  • .NET 对象分配跟踪
  • .NET Async
  • .NET 计数器
  • 事件查看器
  • 数据库

了解如何使用探查器

以下文章和博客文章提供了详细信息,可帮助你了解如何有效地使用 Visual Studio 性能工具。