我有一個WPF應用程序,它很慢。WPF:緩慢的模板實例
它是不是的渲染。首先,渲染非常簡單,其次,我用WPF性能工具包來查看 - 沒有任何東西。
這是不是在我自己的代碼。首先,單元測試工作速度很快,其次,如果我將所有DataTemplates替換爲空白,則一切工作都很快。
到目前爲止,它看起來像緩慢的部分是模板實例化。也就是說,當你啓動應用程序並打開一些複雜的屏幕時,需要很多的時間。並且「很多」我的意思是「很多」。有時可能需要3-5秒 - 例如,當存在一個包含100行的數據網格時。但是,當你轉到另一個選項卡,然後返回到同一個屏幕時,它會快速打開(只要它的視圖模型保持放置狀態)。
這很煩人,不僅因爲它很慢,而且因爲我對此無能爲力。如果我有過一些緩慢控制,我可以,也許,顯示一些「開放,請稍候」消息或東西...
此外,當我看一些其他的WPF應用程序(最值得注意的是,ILSpy)儘管數據量很大,但他們似乎工作得相當快。這讓我相信我可能做錯了什麼。但我不知道從哪裏開始。
任何想法?任何經典錯誤?有小費嗎?
你想知道和做出有教育的猜測是什麼問題。不要懷疑。不要猜測,也不要指望Performance Toolkit告訴你。 [這是如何找出。](http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux/378024#378024) – 2011-04-26 13:58:30
@Mike:是,我廣泛使用這種原始採樣技術,並且在普遍性能下降時幫助我很多。但在這種情況下,我只是沒有足夠的時間來停止執行,因爲性能下降最多隻能持續3-5秒。另外,在我設法阻止它的極少數情況下,它總是停留在WPF的內核中。我也追求這個線索(在ILSpy的幫助下),但到目前爲止,它看起來很無望。因此,我的問題更多的是與WPF相關的問題。 – 2011-04-26 16:52:05
對。它停在WPF的內核中,但是堆棧上有什麼?堆棧中的每一行都負責這段時間。我曾經有人說過「哦,每次我停止它,它都在一些迭代器中,那有什麼好處?」答案是*很棒*,現在只需查看堆棧,就會發現問題。如果你猜猜問題是什麼,那麼它會告訴你,如果你是對的,如果你錯了,它會告訴你什麼是正確的問題。 – 2011-04-26 20:51:27