在发布或调试版本上运行分析工具(C#、Visual Basic、C++、F#)

Visual Studio 提供性能度量和分析工具的选择。 某些工具(如 CPU 使用率和内存使用率)可以在发布版本上运行,也可以在调试应用时运行(调试生成)。 诊断工具窗口中显示的工具 仅在调试会话期间运行。 性能分析器中显示的工具 在没有调试器的情况下运行,通常在发布版本上运行,并在选择停止和收集数据(用于事后分析)后分析结果。

性能探查器和调试器集成的诊断工具提供了不同的信息和体验。 使用诊断工具时,调试器会显示变量值,并允许使用断点。

性能探查器中的发行版本性能数据是最精准的。 这些工具使结果更接近最终用户体验。 通常,这是使用分析工具的首选方法。 但是,在某些情况下,在调试版本中使用调试器可能有助于缩小性能问题的范围,尤其是在想要使用调试器功能(如断点和代码单步执行)时。

若要帮助你决定在发布或调试版本中使用分析工具,请考虑以下事项:

  • 发布版本通过内联函数调用和内联常量、精简未使用的代码路径,以及以调试器无法访问的方式存储变量来实现优化。 调试版本中的性能数字不太准确,因为调试生成缺少这些优化。
  • 除了发布版本和调试版本之间的差异外,调试器本身还会更改性能时间,因为它执行了必要的调试器操作,例如截获异常和模块加载事件。
  • 对于 CPU 密集型调用导致的性能问题,发布和调试版本之间可能存在相当大的性能差异。 检查发布版本中是否存在 CPU 性能问题。
  • 外部性能问题(如文件 I/O 或网络响应问题)在发布版本或调试版本中看起来没有什么不同。
  • 如果问题仅发生在调试生成中,则可能不需要使用发布版本运行工具。
  • 某些工具(如 .NET 对象分配工具)仅在性能探查器(非调试器方案)中可用。

收集发行版本的分析数据

若要在发布版本上收集性能数据,请运行性能探查器工具。

  1. 在 Visual Studio 中打开项目后,将解决方案配置设置为 发布,然后选择 本地 Windows 调试器(或 本地计算机)作为部署目标。

  2. 选择 调试>性能探查器,或按 Alt+F2

  3. 在诊断工具启动页上,选择要运行的一个或多个工具。 仅显示适用于项目类型、操作系统和编程语言的工具。 选择“显示全部工具”,以便查看那些在此诊断会话中被禁用的工具。

    诊断工具的屏幕截图。

    诊断工具的屏幕截图。

  4. 要启动诊断会话,请选择“开始”

    会话运行时,某些工具在诊断工具页上显示实时数据图,并可能显示暂停和恢复数据收集的选项。

    性能探查器上的数据收集的屏幕截图。

    性能探查器上的数据收集的屏幕截图。

  5. 要结束诊断会话,请选择“停止收集”

    分析的数据显示在 报表 页上。

    有关可用于发布版本的工具以及如何分析报表的详细信息,请参阅:

    备注

    可以按 Alt+F2 或单击“调试”>“性能探查器”,以此使用重新启动跳过启动页,并自动使用以前的设置运行

  6. (可选)保存报表,然后在诊断工具启动页上的 最近打开的会话 列表中打开报表。

    诊断工具最近打开的会话列表的屏幕截图。

    诊断工具最近打开的会话列表的屏幕截图。

在调试过程中收集分析数据

在 Visual Studio 中,选择 “调试”>启动调试,或按 F5后,默认情况下会显示“诊断工具”窗口。 若要手动打开它,请选择“调试>Windows>显示诊断工具”。 诊断工具 窗口显示有关事件、进程内存、CPU 使用率和 .NET 计数器的信息。

“诊断工具”窗口的屏幕截图。

  • 使用工具栏中的 设置 图标选择是查看 CPU 使用率内存使用率还是 .NET 计数器

在 Visual Studio 中,通过选择调试>启动调试或按下F5开始调试时,默认情况下会显示诊断工具 窗口。 若要手动打开它,请选择“调试>Windows>显示诊断工具”。 诊断工具 窗口显示有关事件、进程内存和 CPU 使用情况的信息。

诊断工具窗口

  • 使用工具栏中的“设置” 图标选择是查看 CPU 使用率内存使用率还是 UI 分析
  • 设置 下拉列表中选择 设置,以打开具有更多选项 诊断工具属性页

  • 如果运行的是 Visual Studio Enterprise,可以通过 工具>选项>IntelliTrace启用或禁用 IntelliTrace。

诊断会话在停止调试时结束。

有关调试时可用的工具的详细信息,请参阅:

“事件”选项卡

在调试会话期间,“诊断工具”窗口的“事件”选项卡列出了发生的诊断事件。 类别前缀 断点文件等,可让你快速扫描某个类别的列表,或跳过不关心的类别。

通过选择或清除特定类别的事件,使用 筛选器 下拉列表来筛选视图中和视图外的事件。

诊断事件筛选器的屏幕截图。

诊断事件筛选器诊断事件筛选器屏幕截图

使用搜索框在事件列表中查找特定字符串。 下面是匹配三个事件的文件名 模型 的搜索结果:

诊断事件搜索的屏幕截图。

使用搜索框在事件列表中查找特定字符串。 搜索字符串 名称 的结果如下,这些结果匹配了四个事件:

诊断事件搜索的屏幕截图

有关详细信息,请参阅 搜索和筛选“诊断工具”窗口中的“事件”选项卡

通过命令行收集分析数据

若要从命令行测量性能数据,可以使用 Visual Studio 或远程工具随附的 VSDiagnostics.exe。 这对于在未安装 Visual Studio 的系统上捕获性能跟踪或编写性能跟踪集合的脚本非常有用。 有关详细说明,请参阅在命令行中衡量应用程序性能