如何加快WPF程序?
我喜欢用Windows Presentation Framework进行编程。 大多数情况下,我使用WPF和XAML编写类似浏览器的应用程序。
但真正让我恼火的是WPF的缓慢。 一个只有less数控件的简单页面加载速度不够快,但是一旦页面变得更复杂一点,比如包含大量的数据input字段,一个或两个选项卡控件以及其他东西,就会变得很痛苦。
加载这样的页面可能需要一秒以上的时间。 其次,尤其是在不太快的计算机上(读取:客户计算机),可能需要很长时间。
与更改页面上的值相同。 关于WPF UI的一切都是莫名其妙的。
这太意思了! 他们给了我这个漂亮的框架,但是让它慢得令人难以置信,所以我必须一直向客户道歉!
我的问题:
- 你如何加快WPF?
- 你如何描述瓶颈?
- 你如何处理缓慢?
由于这似乎是一个WPF的普遍问题,我正在寻找一般的build议,对许多情况和问题有用。
其他一些相关的问题:
- 你使用什么工具来进行WPF开发
- 开发WPF或Silverlight应用程序的工具
-
你如何加快WPF?
通常在使用下列分析工具之一后,很明显是什么导致了我的瓶颈。
- 如果内存是问题,那么我虚拟化我的数据。
- 如果渲染时间是问题,那么我虚拟化控件或尽可能简化控件模板。
- 如果处理时间是问题,我会尝试改进我的algorithm,或将工作转移到后台线程,并在工作进行时向我的用户界面显示一个跳动。
-
你如何描述瓶颈?
- .NET内存Pofiler
- dotTrace
- WPF的性能分析工具
- 史努比
- Crack.NET
-
你如何处理缓慢?
分析和咨询。
安装SP1 … WPF非常酷的性能增加!
在这里阅读更多
这里是在SP1中进行的两个增强的示例:已经滚动的和UI元素recyceling !
我无法添加评论,这就是为什么我发布了一个新的答案:我从pdc09发现了这个video,提供了一些关于如何configurationwpf应用程序的想法,因为它帮助了我很多,我想分享链接:
高级WPF应用程序性能调优和分析
你试图使用WPF PerfTool而不是VS中的?
WPF是用于具有现代显卡的计算机。 你的客户有现代显卡能够运行Aero吗? 如果你的客户有更老的graphics卡,WPF将回退到与硬件加速graphics相比运行速度非常慢的软件渲染。
你也可能想要分析你的应用程序,以确保它实际上是WPF是慢的部分。 有可能是其他的东西实际上是瓶颈。
避免animation也有助于很多。 如果您必须使用animation,请降低帧率,这将提高“感应”性能
删除alpha透明度/位图效果。
你能提供更多细节吗?
当我使用类似于listview或者具有一些复杂性的网格时,我只注意到一个缓慢的性能。 解决scheme是简化它。
除此之外,我第一次加载应用程序时只注意到一个缓慢的performance。
HTH
我觉得有助于侧面的XAML,并在C#中编写整个用户界面。 这使我可以精确地控制何时创build和加载控件。 这也可以帮助我了解XAML正在“下面”做些什么。