冷启动性能 WPF

9
我正在使用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上运行的同样的工具。

1个回答

1
我怀疑用户控件具有“深层”视觉树结构,因此初始化需要花费一定时间。我自己也遇到了这个问题,并使用了一个解决方法,在应用程序启动时后台加载用户控件。希望这能帮到您。

Amol,感谢您的回答。我点赞了您的回答,因为您部分地回答了我的问题。您是正确的,CPU使用率是XAML解析的结果。过度解析是由于深层次的树,但我希望找到更好的方法来找到性能最差的XAML位,而不需要一次又一次地拆开我的应用程序中的每个用户控件。我也通过注入PRISM区域来拆分用户控件,并等待视图的Loaded事件触发后再将视图注册到该区域。这是PRISM方式懒加载用户控件的方法,就像您描述的解决方案一样。 - markti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接