复杂WPF应用程序的性能问题,如何解决?

时间:2011-10-31 12:04:31

标签: wpf performance refresh rate

我的主窗口有6000 x 6000像素。在那个窗口中,我可以有很多控件(超过5000个),我们可以缩放/平移我们想要的位置。

我在我的应用程序中添加了10个“电视屏幕”控件,每个控件的刷新率为100毫秒。 当我开始这个时,一切都崩溃了......

每个刷新率为100ms的10个对象太多,WPF当时无法绘制它们。我的结论是,WPF绘制的东西很慢......

所有内容都是在向量中绘制的,但我尝试在它们上添加.CacheMode并且它也不起作用..

我该怎么办?

P.S。我的电脑是win7 64位上的8核,8 GB Ram,256 Mb视频卡(nvidia quadro nvs 295)

3 个答案:

答案 0 :(得分:3)

WPF使用软件渲染,以防您超出图形适配器的最大支持分辨率。而且,5k控制!难以置信。对于你想象的一切,WPF并不是一颗银弹。您需要重新设计应用程序或更改正在使用的技术。

答案 1 :(得分:2)

努力减少应用程序中的控件数量。 5K是相当多的,我认为可能有办法减少这个数字。

例如,使用TextBlocks而不是Labels,因为TextBlocks呈现为1个控件,而标签在4.0中呈现为3(我认为它在旧版本中超过3个)

此外,检查并查看是否可以将UI虚拟化与某些控件配合使用。像ListBox 100个项目的东西可以虚拟化,一次只渲染10个。

答案 2 :(得分:2)

看看ZoomableCanvas - 1 million items。这是WPF在使用本书中的每个优化时可以做的最好的例子。我建议您采用该示例并在监视器上以最大分辨率运行它。如果这不能很好地执行,那么WPF就无法做到这一点。

如果分辨率超过视频卡的分辨率,我不知道WPF默认为软件渲染。一个很好的警告要知道!

关于高性能图形API我是第二个Keiren并且说使用DirectX(SlimDX提供托管包装器)。