【问题标题】:Cold Start Performance WPF冷启动性能 WPF
【发布时间】:2014-04-30 20:26:58
【问题描述】:

我正在使用 Visual Studio 中的性能分析工具来评估我正在处理的一个相当大且复杂的 WPF 应用程序。通过延迟加载之前我刚刚在应用程序启动时加载的大多数用户控件,我已经能够显着减少冷启动时间,但是我仍然看到我的大部分 CPU 周期花费在程序集“PresentationFramework.ni.dll”中'。这并不能帮助我弄清楚根本原因是什么,因为它所说的只是时间花在了特定用户控件的“InitializeComponent”(即 XAML 解析)或 Window.Show(即 XAML 解析)上。

我的问题是:如何更详细地了解导致性能问题的特定 XAML 元素?

我正在使用 Visual Studio 2013 并运行 Windows 8.1。我曾经使用旧的 Windows 7 SDK WPF 性能工具包,它显示了一个非常有用的渲染时间显示,当重新绘制特定的 UIElement 时,它会改变屏幕上的颜色,但我似乎找不到在 Windows 8 上运行的相同工具.

【问题讨论】:

    标签: wpf performance xaml


    【解决方案1】:

    我怀疑用户控件有一个“深”的可视化树,所以它会花时间进行初始化。我自己确实遇到了这个问题,并使用了一种解决方法,在应用程序启动后立即在后台加载用户控件。希望这会有所帮助。

    【讨论】:

    • amol,谢谢您的回答。我勾选了你的答案,因为你部分回答了我的问题。您是对的,CPU 使用率是 XAML 解析的结果。过度解析是由于树很深,但我希望找到一种更好的方法来找到性能更差的 XAML 位,而不会一次撕裂我的应用程序一个用户控件。我也通过注入 PRISM 区域并等到视图的 Loaded 事件触发,然后再将视图注册到该区域来分解用户控件。这是您描述的延迟加载用户控件的 PRISM 方式是您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-26
    • 2020-12-23
    • 1970-01-01
    • 2021-12-11
    • 2021-07-16
    • 2010-09-19
    • 1970-01-01
    相关资源
    最近更新 更多