2010-04-23 99 views
9

所以,我正在构建一个WPF应用程序,并在今天进行了测试部署,并发现它的性能很差。我很惊讶,因为我们在视觉效果或动画方面做得并不多。WPF:提高在旧电脑上运行的性能

我部署在两台机器上:运行应用程序所需要的最快和最慢的(最慢的PC有一个带有2GB RAM的Intel Celeron 1.80GHz)。应用程序在速度更快的机器上运行得非常好,但在较慢的机器上却不稳定。而当我说“波涛汹涌”时,我的意思是光标跳过,甚至只是将它传递给有焦点的应用程序的任何打开的窗口。

我打开了任务管理器性能窗口,可以看到每当应用程序有焦点并且光标在其上移动时,CPU使用率都会跳动。如果我将注意力集中到另一个(例如Excel),则CPU使用率在一秒钟后回落。这发生在两台机器上,但在较慢的机器上只有显而易见的变化。我对修改部署机器的时间非常有限,所以没有做很多详细的测试。

该应用程序在我的开发机器上运行良好,但我也看到CPU高达10%,只是在窗口上运行光标。

我从MS下载了WPF性能工具,并一直在修补它(在我的开发机器上)。该文件说这对“帧速率”,在射孔工具指标:

对于没有动画应用, 此值应接近于0

应用程序是没有做任何重动画,但是当光标在任何窗口上时,帧频保持接近50。我测试过的屏幕在网格中有“突出显示”的列标题和滚动时改变颜色和外观的按钮。即使在窗口的空白区域移动鼠标也会导致相同的帧频和CPU使用率(似乎与这些次要动画无关)。 (另外,我无法弄清楚除了两个默认工具Perforator和Visual Profiler以外,如何安装WPF性能工具,这可能是一个单独的问题)。

我也有Redgate的分析工具,但我不确定这是否会影响渲染性能。

所以,我意识到这不是一个简单的事情排除故障,没有具体细节或示例代码(我不能发布)。我的问题是:

  • 都有些什么东西一般看 的(或避免)的代码以提高性能 ?
  • 我可以使用WPF 性能工具来缩小 问题的步骤?
  • 上面列出的PC规格(Intel Celeron 1.80GHz,2GB RAM)太慢,甚至无法运行香草WPF应用程序?

回答

3

您是否将任何BitmapEffect -s应用于您的UI元素? 它们不是由GPU处理的,所以CPU负责渲染它们。如果使用不当(例如,将OuterGlowBitmapEffect应用于大型复杂元素),它们可能会对性能产生可怕的影响。

此外,你还可能想尝试与性能剖析剖析你的应用程序。只是为了看看它是不是你的代码导致这一点。

0

这是不正常的WPF - 我怀疑你的开发者之一曾撰文指出,在后台运行的定时器(或更可能给你的描述,一个鼠标移动处理程序),这是影响在某种程度上UI代码。

如果你有蚂蚁性能分析器(这是非常好的)我会运行在你的应用程序,并重现该问题。

一旦你做到了,蚂蚁应该告诉你相当快的问题是什么。 如果蚂蚁没有透露所有东西,并显示您在您的代码其实都不是在这段时间内运行,那么我怀疑车的显卡驱动程序。

您可以通过设置以下注册表项,并再次尝试禁用硬件加速测试此:

HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics\DisableHWAcceleration to 1 

注:DisableHWAcceleration值应该是一个DWORD