2011-03-11 69 views
0

我有我的Silverlight項目嚴重的性能問題,當我跑我的項目CPU使用率上升80% - 90%Silverlight性能問題!

計算機下去!!!,這些都是大特色項目:

1-我們使用的Silverlight 4.

3-我們使用MVVM模式,這意味着所有的數據源,狀態綁定以及View Model中的屬性。

4-大部分控件是在代碼中動態創建的。

5-我們有在其中是所有產生的控制的容器主視圖模型的主控制一個參考。

6-在我們的控件中,我們有許多佈局(柵格)。

7-我們有主視圖模型,它是系統中所有兒童視圖模型的容器。

8-我們有許多州和動畫

9-我們不使用繼電器命令,我們使用常規命令和事件,所以我們引發事件並處理它的父項(我們有很多事件)。

以上是否有導致性能問題?我認爲Silverlight本身存在問題,是否有任何Silvelight 4性能更新。

我感謝所有幫助,

感謝

+2

沒有代碼,這是不可能的。儘管如此,我不會那麼倉促地責怪Silverlight。首先嚐試使用分析器來查看發生了什麼。 此外,還有一個巨大的MVVM實現和框架,你在用什麼?一個自制的,MVVM Light或Caliburn.Micro等框架,還有其他的嗎? – 2011-03-11 11:14:15

+1

你是否通過性能分析器運行你的代碼?這會告訴你比我們的猜測更多。如果我不得不猜測,我會開始尋找狀態和動畫,還要看動態創建控件(即,你是否真的需要所有的一次等) – 2011-03-11 11:15:38

回答

0

一個複雜的應用程序很可能有性能問題需要解決。數據綁定和各種事件的使用雖然對於構建應用程序很有幫助,但卻很難看出發生了什麼。控制流可能不明顯,例如由於級聯事件/屬性更改,代碼可能會執行多次。

我推薦使用探查器來查看哪些消耗CPU時間最多 - JetBrains DotTrace是我用於Silverlight的一種,請參閱other questions瞭解更多信息。然後你可以專注於問題領域。

如果您的應用程序隨着時間的推移逐漸變慢,那麼也值得調查是否還有內存泄漏。

0

您是否在任何地方使用DropShadowEffect?在這種情況下,您可能需要嘗試刪除它們。我曾經遇到過這個問題。一個模板包含一個DropShadowEffect,它可以使CPU最大化,解決了它的問題。

+0

不,我不,謝謝 – Saad 2011-03-11 14:36:41

0

以我的經驗,你的第九點通常是罪魁禍首。

確保您在完成類中的事件時釋放類中的事件處理程序。在我看到Silverlight或WPF性能下降的幾乎所有情況下都是對事件代表的不恰當處理。

作爲其中一條評論指出,使用性能分析器,你很可能會看到事件處理程序正在消耗過多的內存數量......這意味着它們在它們應該存在之後仍然存在並回應事件。

因此,性能問題源於許多對象或控件停留在內存中並對事件做出響應。

這是我最好的猜測。

希望它有幫助。