2012-01-31 44 views
2

我有一個5年前的winforms.netnet MDI應用程序,我使用vs 2010從.net 2.0轉換到4.0 ...應用程序現在需要大約1.5分鐘當在vs之外開始時開始並打開一個空白表單,並且在vs之內啓動大約15秒(在升級到.net4.0和devexpress 11.2之前,在任一情形中沒有明顯的延遲)排除從.net 2.0轉換爲4.0之後的性能問題

不幸的是,這裏有很多變量......就像我們也必須使用devexpress控制庫的新版本,以及xpo持久層(orm)。

主窗體大約有1500個左右的控件,通過devexpress tabcontrol的12個選項卡控制spreed。分析應用程序顯示,在窗體構造函數中,將近63%的時間花費在「clr.dll」中......我現在已經想出瞭如何解釋這個問題。

作爲一個測試,我使用相同的工具構建了另一個應用程序,並在空白表單上放置了1500個控件,它顯示該應用程序中不到1%的時間用在該窗體構造函數的clr.dll中。

這感覺不對,我...任何人都可以做的這個任何意義或點我在正確的方向繼續理解,所有的時間是怎麼回事......

我準備只接受結果並說得好...我們不能這樣做,但是我可以創建另一個devexpress表單,並在其上放置1500個控件,當我剖析它時,結果會更有意義,大部分在窗體構造函數中的時間花在ControlsCollection.Add函數或控件構造函數本身上...

有什麼想法嗎?

感謝喬納森

Profiler results OK ......我打開負載symbos,這就是我現在得到......我必須說,我很擔心,因爲我是一個英特爾機器上運行。 ..我也無法找到有關PreStubAmd64調用的任何文檔。 enter image description here

回答

1

那麼......我似乎解決了我自己的問題,但我不明白這一切。

因爲我已經從2008年轉換了原來的項目,VS 2010中的目標平臺是「任何Cpu」......(這對我來說很有意義......)。我試圖建立一個新的應用程序,表現出同樣的糟糕的表現,我注意到,我所有的新項目默認爲x86,並且運行得很好...所以...

玩過配置管理器並創建一個新的配置我的問題解決方案的目標是x86,我的啓動時間從90秒到9秒......並且我看不到任何「stubAMD64」函數,它佔用了我實例化表單時的80%...... wohooo ..

因此對於其他人將表格2008轉換爲2010並需要在x64下運行,ya可能想要將目標更改爲x86。 (我敢肯定,我錯過了各種各樣的東西......但我很高興!)

喬納森

我不認爲任何人都關心解釋爲什麼一個應用程序將在WOW64比運行速度更快原生64位...