2010-04-23 98 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