2009-12-07 53 views
0

我們有一箇中等規模的應用程序,它取決於多個用戶控件,即:.NET,用戶控件,和應用程序啓動時間

一個tablelayout面板,與用戶控件的2×5格,有3個以上級別的繼承。我們用應用程序遇到的一個大問題已經被證明是啓動時間(冷熱),我們正在初始化這個用戶控制網格。

從我們的時間報告來看,這種形式的初始化時間大約爲0.75秒,而減少這個時間將成爲大特賣

我的問題是:我能做些什麼來加快速度?每當我對類似複雜的InitializeComponents(所有窗口,.net控件)執行時間檢查時,結果有時會大大減少(< 10毫秒)。

編輯)我想知道是否像標記我最後的類密封或類似的東西會有所幫助。

edit2)我已經深入瞭解initializecomponent的時機,並且對於我當前的機器,主容器增加了10個組件(每個10ms)。每個組件都增加了3個組件(每個10毫秒)。 10x10 + 30x10 = 700ms。除非我可以提高物品添加到容器的速度,否則我認爲我是SOL。

+5

你是否對應用程序進行了簡介,看看時間花在哪裏? – 2009-12-07 17:04:00

+0

唉,我在Visual C++的世界裏,探測器世界的禍害。我只能使用1個允許混合模式的profiler,但它沒有給出足夠的結果(不記得名字)。有關手動計時信息,請參閱編輯。 – greggorob64 2009-12-07 17:59:46

回答

1

你是否在做任何依賴於控制啓動的外部因素,如訪問網絡或從數據庫中提取?這些可以增加應用程序的加載時間。

檢查任何循環,並嘗試並減少這些循環。

+0

不,這些都是嚴格標準的System.Windows.Forms組件,沒有數據庫調用。 – greggorob64 2009-12-07 17:04:52

0

它可能是也可能不是相關的,但我有使用TableLayoutPanel類似的問題。問題在於繪圖時間,正如一名探查者所揭示的那樣。對我們造成問題的組合是內部控制和動態調整大小的透明度。我玩過一些CreateParams選項,但不幸的是,我最終不得不創建一個自定義的佈局引擎來使它真正唱歌。

無論如何,我現在肯定會下載免費試用版的探查器。性能問題通常在意想不到的位置。你可以花幾個小時在你認爲是罪魁禍首的地方進行優化,只是在性能差異上增加0.0001毫秒。

+0

我推薦EQATec Profiler,有一個免費版本,對我來說比RedGate的解決方案更容易使用:http://www.eqatec.com/tools/profiler – 2009-12-07 17:28:08

+0

唉,我是世界上的Visual C++的禍害之一探查器世界。我只能使用1個允許混合模式的profiler,但它沒有給出足夠的結果(不記得名字)。 – greggorob64 2009-12-07 17:32:48

相關問題