如何加快WPF程序?

我喜欢用Windows Presentation Framework进行编程。 大多数情况下,我使用WPF和XAML编写类似浏览器的应用程序。

但真正让我恼火的是WPF的缓慢。 一个只有less数控件的简单页面加载速度不够快,但是一旦页面变得更复杂一点,比如包含大量的数据input字段,一个或两个选项卡控件以及其他东西,就会变得很痛苦。

加载这样的页面可能需要一秒以上的时间。 其次,尤其是在不太快的计算机上(读取:客户计算机),可能需要很长时间。

与更改页面上的值相同。 关于WPF UI的一切都是莫名其妙的。

这太意思了! 他们给了我这个漂亮的框架,但是让它慢得令人难以置信,所以我必须一直向客户道歉!

我的问题:

  1. 你如何加快WPF?
  2. 你如何描述瓶颈?
  3. 你如何处理缓慢?

由于这似乎是一个WPF的普遍问题,我正在寻找一般的build议,对许多情况和问题有用。

其他一些相关的问题:

  • 你使用什么工具来进行WPF开发
  • 开发WPF或Silverlight应用程序的工具
  1. 你如何加快WPF?

    通常在使用下列分析工具之一后,很明显是什么导致了我的瓶颈。

    • 如果内存是问题,那么我虚拟化我的数据。
    • 如果渲染时间是问题,那么我虚拟化控件或尽可能简化控件模板。
    • 如果处理时间是问题,我会尝试改进我的algorithm,或将工作转移到后台线程,并在工作进行时向我的用户界面显示一个跳动。
  2. 你如何描述瓶颈?

    • .NET内存Pofiler
    • dotTrace
    • WPF的性能分析工具
    • 史努比
    • Crack.NET
  3. 你如何处理缓慢?

    分析和咨询。

安装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正在“下面”做些什么。