分析资源消耗和 UI 线程活动(XAML)

使用 应用程序时间线 探查器查找和修复 XAML 应用程序中与应用程序交互相关的性能问题。 此工具通过显示应用程序资源消耗的详细视图来帮助提高 XAML 应用程序性能。 可以分析应用程序准备 UI 帧(布局和呈现)、维护网络和磁盘请求所用的时间,以及在应用程序启动、页面加载和 Windows 调整大小等方案中。

应用程序时间线是可使用调试性能探测器命令启动的工具之一>

此工具替换了旧版 Visual Studio 中诊断工具集的 XAML UI 响应能力 工具。

可以在以下平台上使用此工具:

  • 通用 Windows 应用(在 Windows 10 及更高版本上)
  • Windows 8.1
  • Windows Presentation Foundation (.NET 4.0 及更高版本)
  • Windows 7

备注

可以收集和分析 CPU 使用情况数据和能耗数据以及 ApplicationTimeline 数据。 请参阅在发行版本或调试版本上运行分析工具

收集应用程序时间线数据

可以在本地计算机、连接的设备、Visual Studio 模拟器或模拟器或远程设备上分析应用的响应能力。 请参阅在发行版本或调试版本上运行分析工具

提示

如果可能,请直接在设备上运行应用。 在模拟器上或通过远程桌面连接观察到的应用程序性能可能与设备上的实际性能不同。 另一方面,使用 Visual Studio 远程工具收集数据不会影响性能数据。

下面是基本步骤:

  1. 打开 XAML 应用。

  2. 单击“调试/性能探查器”。 应在 .diagsession 窗口中看到分析工具列表。

  3. 选择“应用程序时间线”,然后单击窗口底部的“启动”

    应用程序时间线工具选择

    备注

    你可能会看到一个用户帐户控制窗口,请求你有权运行 VsEtwCollector.exe。 单击“是”

  4. 在应用中运行你想要对其进行分析的方案,以收集性能数据。

  5. 若要停止分析,请切换回 .diagsession 窗口,然后单击窗口顶部的“停止”

    Visual Studio 分析收集的数据并显示结果。

    时间线探查器报告

分析时间线分析数据

收集分析数据后,可以使用以下步骤启动分析:

  1. 查看 UI 线程利用率视觉吞吐量(FPS) 图中的信息,然后使用时间线导航栏选择要分析的时间范围。

  2. 使用 UI 线程利用率视觉吞吐量(FPS) 图中的信息,检查 时间线详细信息 视图中的详细信息,以查找任何看似缺乏响应能力的原因。

报告场景、类别和事件

应用程序时间线 工具显示与 XAML 性能相关的方案、类别和事件的计时数据。

诊断会话时间线

性能和诊断时间线

页面顶部的标尺显示了已分析信息的时间线。 此时间线适用于 UI 线程利用率 图和 视觉吞吐量 图。 可以通过拖动时间线上的导航栏选择时间线段来缩小报表的范围。

时间线还显示已插入的任何用户标记以及应用的激活生命周期事件。

UI 线程利用率图

CPU 使用率图形

“UI 线程使用率 (%)”图是一个条形图,它显示了一个集合段内某个类别中耗用的相对时间量

视觉吞吐量 (FPS) 图

视觉吞吐量图

“可视吞吐量(FPS)”折线图显示了应用程序的 UI 线程和复合线程上的每秒帧数 (FPS)

时间线详细信息

详细视图是你分析报告花费最多时间的地方。 它显示应用程序按 UI 框架子系统或消耗 CPU 的系统组件分类的 CPU 使用情况。

支持以下事件:

名字 描述
分析 分析 XAML 文件和创建对象所用的时间。

展开“时间线详细信息”中的“分析”节点将显示由于根事件进行分析的所有 XAML 文件的依赖关系链。 通过此提示,可以在性能敏感方案中识别不必要的文件分析和对象创建,并对其进行优化。
布局 在大型应用程序中,可能会同时在屏幕上显示数千个元素。 此显示可能会导致 UI 帧速率较低,应用程序响应能力相应较差。 Layout 事件准确地确定了布局每个元素所需时间的成本(即 Arrange、Measure、ApplyTemplate、ArrangeOverride 和 MeasureOverride 所花费的时间)。 它还会生成参与布局过程的可视化树。 可以使用此可视化效果来确定要删除的逻辑树,或评估其他延期机制,以优化布局过程。
呈现 将 XAML 元素绘制到屏幕所用的时间。
I/0 从本地磁盘或通过 Microsoft Windows Internet (WinINet) API访问的网络资源中检索数据的时间。
应用程序代码 执行与分析或布局无关的应用程序(用户)代码所花费的时间。
Xaml 其他 执行 XAML 运行时代码所用的时间。

提示

开始分析时,请选择 CPU 使用率 工具以及 应用程序时间线 工具,以查看在 UI 线程上执行的应用方法。 将长时间运行的应用代码移动到后台线程可以提高 UI 响应能力。

自定义时间线详细信息

使用 时间线详细信息 工具栏对 时间线详细信息 视图项进行排序、筛选和指定注释。

名字 描述
排序 按开始时间或事件的长度进行排序。
按帧分组事件 添加或删除按帧对事件进行分组的顶级 Frame 类别。
筛选器时间线详细信息列表 按所选类别和事件长度筛选列表。
自定义时间线详细信息 您可以为事件指定批注。