如何分析 WPF 4.5 UI 性能?
How to profile WPF 4.5 UI performance?
我正在开发 .NET 4.5 WPF 应用程序并遇到 UI 渲染性能问题。
谷歌搜索后,我找到了 WPF Performance Suite 页面,该页面准确描述了我需要的工具 - Visual Profiler。它允许查看 WPF 元素树并分析每个元素对总渲染时间的贡献。
唯一的问题是该页面指出该工具包含在面向 Windows 7 和 .NET 4.0 的 Microsoft Windows SDK v7.1 中。
由于我的应用程序适用于 .NET 4.5,并且我使用的是 Windows 8.1,因此我已经安装了 Windows SDK for Windows 8.1。令我惊讶的是,它似乎根本不包含 WPF 性能套件,尤其是该工具。
然后,我尝试从 this 答案安装 WPF Performance Suite,但它仅适用于 .NET 4.0 应用程序.
那么,您从哪里获得适用于 .NET 4.5 应用程序的 WPF 性能套件?
或者,更一般地说,您如何分析 .NET 4.5 应用程序的 WPF UI 渲染性能,以找出树中的哪些元素在复杂的 UI 中具有最高的性能影响?
事实证明,Visual Studio 的更高版本内置了这个,所以现在使用 Visual Studio 2013,我可以通过打开 Visual Studio 创建一个新的分析器会话,从顶部菜单中有一个 Analyze 下拉菜单,只需转到 Analyze -> Profiler -> Attach/Detach 以在调试模式下将其附加到现有进程 运行(我似乎必须在内部执行此操作另一个 Visual Studio window 否则它会变灰)。但是,旁注:它真的很糟糕而且不是很直观......我建议使用一些更好的商业分析器,因为它们更简单。
最终,我找到了一个我一直在寻找的工具,它对我很有帮助。
要了解呈现 WPF 布局的瓶颈究竟在哪里,您需要:
- 安装 Visual Studio 2015,如果您还没有 :)
- 转到调试 -> 启动诊断工具而不调试
(NOTE: 这个好像改成了 Debug -> Profiler -> 性能分析器...).
- 检查 Application Timeline 工具并点击 Start 在此视图中:
- 当您的应用启动时,执行引起您感兴趣的问题的操作
英寸
- 然后点击停止录制,你最终会得到你的元素
渲染每个节点所花费时间的树。
然后,你只需要按Duration (total)排序,展开最慢的节点,直到找到问题:
总而言之,如果您使用 Name
属性为您的控件设置名称,则将上面树中的节点与您的布局相关联会容易得多:
<TextBlock Name="OwnerContact">
我正在开发 .NET 4.5 WPF 应用程序并遇到 UI 渲染性能问题。
谷歌搜索后,我找到了 WPF Performance Suite 页面,该页面准确描述了我需要的工具 - Visual Profiler。它允许查看 WPF 元素树并分析每个元素对总渲染时间的贡献。
唯一的问题是该页面指出该工具包含在面向 Windows 7 和 .NET 4.0 的 Microsoft Windows SDK v7.1 中。
由于我的应用程序适用于 .NET 4.5,并且我使用的是 Windows 8.1,因此我已经安装了 Windows SDK for Windows 8.1。令我惊讶的是,它似乎根本不包含 WPF 性能套件,尤其是该工具。
然后,我尝试从 this 答案安装 WPF Performance Suite,但它仅适用于 .NET 4.0 应用程序.
那么,您从哪里获得适用于 .NET 4.5 应用程序的 WPF 性能套件?
或者,更一般地说,您如何分析 .NET 4.5 应用程序的 WPF UI 渲染性能,以找出树中的哪些元素在复杂的 UI 中具有最高的性能影响?
事实证明,Visual Studio 的更高版本内置了这个,所以现在使用 Visual Studio 2013,我可以通过打开 Visual Studio 创建一个新的分析器会话,从顶部菜单中有一个 Analyze 下拉菜单,只需转到 Analyze -> Profiler -> Attach/Detach 以在调试模式下将其附加到现有进程 运行(我似乎必须在内部执行此操作另一个 Visual Studio window 否则它会变灰)。但是,旁注:它真的很糟糕而且不是很直观......我建议使用一些更好的商业分析器,因为它们更简单。
最终,我找到了一个我一直在寻找的工具,它对我很有帮助。
要了解呈现 WPF 布局的瓶颈究竟在哪里,您需要:
- 安装 Visual Studio 2015,如果您还没有 :)
- 转到调试 -> 启动诊断工具而不调试
(NOTE: 这个好像改成了 Debug -> Profiler -> 性能分析器...). - 检查 Application Timeline 工具并点击 Start 在此视图中:
- 当您的应用启动时,执行引起您感兴趣的问题的操作 英寸
- 然后点击停止录制,你最终会得到你的元素 渲染每个节点所花费时间的树。 然后,你只需要按Duration (total)排序,展开最慢的节点,直到找到问题:
总而言之,如果您使用 Name
属性为您的控件设置名称,则将上面树中的节点与您的布局相关联会容易得多:
<TextBlock Name="OwnerContact">