Windows SDK 包括一套用于 Windows Presentation Foundation (WPF) 应用程序的性能分析工具,称为“WPF 性能套件”。 本主题介绍如何安装和使用 WPF 性能套件中的分析器和可视化探查器工具。
本主题包含以下各节:
以下步骤介绍如何安装 WPF 性能套件。
-
如果您已安装早期版本的 Windows 性能工具包,请将其卸载。
-
安装 Windows SDK。
Windows SDK Download Page(Windows SDK 下载页)。
-
“工具”。
-
“安装 Windows 性能工具包”[Install Windows Performance Tool Kit]。
安装向导随即出现。
-
按照显示的说明安装 Windows 性能工具包。
默认情况下,会安装以下功能。
-
性能分析器
-
Windows 性能工具包帮助
-
GPUView
-
WPF 性能套件
-
若要使用 WPF 性能套件,用户帐户必须拥有管理特权。
以下步骤介绍如何启动 WPF 性能套件。
-
“Microsoft Windows 性能工具包”[Microsoft Windows Performance Toolkit]。
-
“WPF 性能套件”[WPF Performance Suite]。
-
“是”。
WPF 性能套件随即启动。
下图显示“添加工具”对话框。
默认情况下,WPF 性能套件包括以下性能分析工具。
|
工具 |
说明 |
|---|---|
|
分析器 |
分析呈现行为。 |
|
可视化探查器 |
按可视化树中的元素分析 WPF 服务(如布局和事件处理)的使用。 |
“确定”。
下图显示了分析器用户界面。
使用分析器
下图演示了一个示例。
分析器关系图
分析器有许多有用的关系图,可用于监视这些级别。
下表描述每个关系图报告的指标。
|
历史记录关系图 |
说明 |
注释 |
|---|---|---|
|
帧速率 |
报告应用程序向屏幕进行呈现的速率。 |
在性能良好的应用程序的动画中,帧速率应接近监视器的刷新频率(通常为 60 或 75)。 |
|
已更新矩形增加速率 |
指示 WPF 必须为每个帧更新的矩形区域的数量。 |
这不一定是理想或不理想的值,只是应考虑的一个与应用程序总体性能有关的值。 |
|
每帧的 SW IRT |
显示呈现应用程序的一个帧所需要的软件中间呈现目标 (IRT) 数。 |
软件 IRT 的成本高于硬件 IRT。 如果此值较高(例如大于 5),则可能表示 WPF 运行时正在执行大量工作以呈现应用程序。 否则,此值表示某些场景是使用较慢的软件管道呈现的。 |
|
每帧的 HW IRT |
显示呈现应用程序的一个帧所需要的硬件中间呈现目标 (IRT) 数。 |
IRT 是成本高昂的硬件图面,WPF 必须与这些图面之间以双向方式分配和复制数据。 在此情况下,必须分析使用前面提及的元素的所有代码区域。 硬件 IRT 的成本低于软件 IRT。 |
|
视频内存使用量 |
此指标不跟踪向视频驱动程序进行的内存分配或用于编译和加载像素和顶点着色器的内存分配。 |
超出可用纹理内存量通常会导致 WPF 呈现逻辑回退到软件,并且多个显示(多个监视器)会对应用程序所需的视频内存量产生乘积效果。 |
分析器呈现选项和优化呈现
这些选项位于用户界面的下部区域。
下图显示了分析器呈现选项。
以下各节讨论分析器如何帮助您做到这一点。
避免软件呈现
小型区域在这方面的顾虑少一些。
下表列出了有助于检测软件程序问题的分析器选项。
|
选项 |
说明 |
注释 |
|---|---|---|
|
用紫色淡色绘制软件呈现 [Draw software rendering with purple tint] |
这包括软件呈现目标、软件三维内容以及逐基元软件回退。 |
Brush 或超出视频卡的纹理大小。 |
|
用红色淡色绘制软件呈现位图效果 [Draw software rendered bitmap effects with red tint] |
使用红色淡色绘制旧式的软件呈现位图效果。 |
Effect 类。 |
“用紫色淡色绘制软件呈现”呈现选项的 PhotoDemo 示例应用程序。
监视已更新区域
此外,不必要的更新还会影响便携式计算机电池寿命。
|
选项 |
说明 |
注释 |
|---|---|---|
|
显示已更新区域更新覆盖 [Show dirty-region update overlay] |
这样,您便可以查看在应用程序中重新绘制区域的时间和位置。 |
当帧速率和已更新矩形增加速率不为零但应用程序中没有可视化对象更改时,可使用此选项。 |
|
禁用已更新区域支持 [Disable dirty region support] |
使 WPF 在进行更改时随时重新绘制整个窗口。 |
启用此选项将使应用程序的呈现速度大为减慢。 |
|
在呈现之前清除后台缓冲区 [Clear back-buffer before rendering] |
在每次绘制操作之前清除应用程序窗口。 |
该选项可高效显示最近的已更新区域,而已更新区域更新覆盖对于查看已更新区域在一段时间内的更改更为有用。 |
检测性能降级的其他根源
如果选择其中一个选项并且帧速率显著下降,便可能确定应用程序中的瓶颈。
|
选项 |
说明 |
注释 |
|---|---|---|
|
禁用不透明度效果 [Disable Opacity Effects] |
禁用某些可能会造成性能下降的不透明度效果。 |
Button)上设置。 |
|
禁用逐基元软件回退 [Disable per-primitive software fallback] |
无法禁用软件中间呈现目标和其他软件呈现。 |
请将其保留未选中状态。 |
|
禁用高质量图像重新缩放 [Disable high-quality image rescaling] |
禁止将大图像重新缩放为较小大小。 |
如果选中此选项会显著降低帧速率,请考虑将图像解码为与其显示大小接近的大小。 |
|
禁用三维呈现 [Disable 3D rendering] |
禁用所有三维呈现操作 |
使您能够在应用程序中查看三维呈现操作的效果。 |
通过分析此工具的分析输出,可以确定应用程序中的哪些可视元素可能引起性能瓶颈。
UISpy.exe (UI Spy)。
使用可视化探查器
“可视化探查器”选项卡的顶部。
更重要的是,可视化探查器提供了对象所消耗特定 WPF 资源量的细目分类。
下图显示了可视化探查器用户界面。
可视化探查器用户界面分为八个区域。
-
元素树搜索框
-
可视化元素树
-
元素详细信息和预览
-
元素独占 CPU 使用率详细信息
-
应用程序 CPU 使用率详细信息
-
捕获的数据缩放控件
-
历史记录关系图显示设置
-
用于应用程序预览和性能覆盖的选项
以下各节会介绍每个区域。
元素树搜索框
您可以按照类型或名称搜索元素。
可视化元素树
“元素树”部分中的树控件显示应用程序中可视化元素的类型和名称以及子树大小和布局详细信息。
以下是树中的元素标签的示例。
Border 'border1' (26) 0.02% (I)/ 0.00 % (E) - .24 ms (I) / 0.00 ms (E)
|
元素标签部分 |
说明 |
|---|---|
|
Border |
元素的类型。 |
|
'border1' |
元素的名称。 |
|
(26) |
子树大小。 |
|
0.02% (I) |
相容树的总大小百分比,相容树是元素及其所有后代。 |
|
0.00 (E) |
仅针对该元素的总元素百分比。 |
|
.24 ms (I) |
对元素及其后代进行布局所用的时间(以毫秒为单位)。 |
|
0.00 ms (E) |
仅对元素进行布局所用的时间(以毫秒为单位)。 |
“视图”菜单可控制是否显示非独占/独占百分比/时间信息。
热路径显示子树中 CPU 使用率最高的元素。
元素详细信息和预览
如果选择了最顶层的元素,则预览会显示应用程序的预览。
元素独占 CPU 使用率详细信息
例如,一个元素可能在布局排列中花费 x% CPU 时间,在布局测量中花费 y% 时间,在呈现中花费 z% 时间。
应用程序 CPU 使用率详细信息
这样,您便可以轻松查看应用程序在布局与呈现中花费的时间。
下表描述了关系图中表示的应用程序事件。
|
|
|---|
|
TimeManager.Tick 方法。 |
|
应用程序事件 |
说明 |
|---|---|
|
Unlabeled Time |
在 WPF 中另一个应用程序事件中花费的未分类时间和 WPF 之外的应用程序花费的所有时间 |
|
RenderMessageHandler (MediaContext) |
此事件会导致时间管理器对其他事件进行时钟周期计数。 |
|
Rendering Thread |
这对于检测呈现绑定的应用程序十分有用。 |
|
布局 |
在度量、排列和呈现处理过程中发生。 |
|
UpdateRealizations |
在更新文本和位图效果的内部位图表示形式时发生。 |
|
Tick (TimeManager) |
此事件可以触发动画呈现器处理程序。 每秒进行的实际时钟周期计数因可用系统资源而异。 |
|
AnimatedRenderMessageHandler (MediaContext) |
启用动画时,此处理程序会处理和更新动画,从而导致属性更改并进行呈现。 |
|
Render (MediaContext) |
此事件与 Visual Studio 探查器 (VSP) 文件中的 MediaContext.Render 方法相对应。 |
捕获的数据缩放控件
通过拖动缩放窗口手柄,可对元素独占 CPU 使用率和应用程序 CPU 使用率历史记录关系图的时间轴调整大小并进行更改。
历史记录关系图显示设置
使用滑块可为关系图设置最大显示值。
用于应用程序预览和性能覆盖的选项
“控制选项”部分包含三个用于执行以下操作的切换按钮。
-
单击第一个切换按钮可暂停或启动可视化查看器数据收集。
-
“预览”部分显示应用程序的实时预览。
-
红色的深度与 CPU 使用率相关。