【问题标题】:How to profile WPF 4.5 UI performance?如何分析 WPF 4.5 UI 性能?
【发布时间】:2016-02-01 19:15:25
【问题描述】:

我正在开发一个 .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 性能套件但它仅适用于 .NET 4.0 应用程序

那么,您从哪里获得适用于 .NET 4.5 应用程序的 WPF 性能套件?
或者,更笼统地说,您如何分析 .NET 4.5 应用的 WPF UI 呈现性能,以找出树中的哪些元素对复杂 UI 的性能影响最大?

【问题讨论】:

  • 你有这些开始菜单快捷方式吗:Windows Kits | Windows 性能工具包 | Windows 性能分析器和记录器?这就是我所拥有的,尽管我的 Win7 机器上有更新的 Win 10 SDK。也许这个套件已经改名了。
  • @ChrisO:是的,我有这些快捷方式。我尝试使用启用了 XAML 活动和 XAML 应用程序分析附加配置文件的 Windows 性能记录器创建指标。但是当我在 Windows Performance Analyzer 中打开指标时,我看不到任何与 XAML 指标相关的内容,只有常规指标,如存储、内存等。你知道如何使用这两个应用程序而不是 Perforator 和 Visual Profiler获取 WPF 元素树指标?
  • 不,我不知道,虽然帮助菜单显示了指向 Windows Performance Toolkit Forum 的链接,但您可能会在那儿获得更好的运气。
  • @ChrisO:明白了,谢谢!我试试看!
  • @PhilipRieck:没错。但是,如果您点击 安装 WPF 性能套件 部分中的 Windows SDK Download Page 链接,它将带您进入 Microsoft Windows SDK for Windows 7 and .NET Framework 4 页面, 并且安装后,你会发现这些工具确实只适用于.NET 4.0。我不知道为什么它被标记为适用于 .NET 4.5 应用程序。

标签: .net wpf mvvm profiling .net-4.5


【解决方案1】:

最终,我找到了一个我一直在寻找的工具,它对我真的很有帮助。

要了解渲染 WPF 布局的瓶颈究竟在哪里,您需要:

  1. 安装 Visual Studio 2015,如果您还没有的话 :)
  2. 转到调试 -> 启动诊断工具而不进行调试
    注意:这似乎更改为 Debug -> Profiler -> Performance Profiler...)。
  3. 检查Application Timeline工具并在此视图中点击Start

  1. 当您的应用启动时,执行引起您感兴趣的问题的操作 在。
  2. 然后点击停止录制,你最终会得到你的元素 渲染每个节点所花费的时间的树。 然后,只需要按Duration(total)排序,展开最慢的节点,直到找到问题为止:

总之,如果您使用Name 属性为您的控件设置名称,那么将上面树中的节点与您的布局关联起来会更容易,如下所示:

<TextBlock Name="OwnerContact">

【讨论】:

    【解决方案2】:

    事实证明,更高版本的 Visual Studio 已内置此功能,因此现在使用 Visual Studio 2013,我可以通过打开 Visual Studio 创建一个新的分析器会话,然后从顶部菜单中有一个分析下拉菜单,只需转到分析-> 探查器-> 附加/分离将其附加到在调试模式下运行的现有进程(我似乎必须在另一个 Visual Studio 窗口内执行此操作,否则它会变灰)。但是,附注:它真的很糟糕而且不是很直观......我建议使用一些更好的商业分析器,因为它们更简单。

    【讨论】:

    • 如果你能推荐一个带有 WPF 元素树分析的商业分析器,我会非常乐意尝试 :) 我试过 ANTS,但它似乎没有提供这样的见解。
    • 关于您提到的 VS 2013 内置分析工具,有XAML UI Responsiveness tool。但是,当我尝试将它与我的项目一起使用时,它是灰色的。 AFAIK,这是因为它仅适用于基于 XAML 的 Windows 应用商店应用程序,但不幸的是,我的应用程序并非如此。或者您的意思是其他一些内置工具?
    • @AlexanderAbakumov 但是 AFAIK ANTS 分析器确实分析了应该包括 WPF 元素和树的 .NET 层,如果这就是你所追求的,它还包括渲染方法和诸如此类的东西,因为它构建了一个执行时间最长的方法调用树,并以非常漂亮的图形方式向您显示。这和你所追求的不一样吗?此外,关于内置工具,我认为它需要特定版本的 VS。我正在使用 VS Professional 2013
    • Alexandru:是的 :) 我最终安装了 VS 2015 并使用了其新的内置分析工具,称为 Application Timeline。除此之外,它完全符合我的要求:它显示了元素树和在布局过程中每个级别花费的时间。这对于快速查明主要问题、尝试不同的解决方案并分析它们的实际表现非常有帮助。
    • Alexandru:我已经发布了 - 请参阅下面的答案 :) 请随时投票或让我知道我可以做些什么来让它变得更好。
    猜你喜欢
    • 2011-06-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 2017-11-22
    • 2013-10-19
    相关资源
    最近更新 更多