2009-10-28 111 views
1

我正在編寫我自己的文本編輯器,我想知道如何使它加載速度更快。 Notepad.exe巫婆附帶Windows加載幾乎立即,它是一個小應用程序(在XP是67.5KB),我知道我的應用程序是一個MDI項目,但它有〜900KB,它在5秒鐘內加載。我可以編寫一個包含所有位圖的DLL並從那裏加載它們,但我不知道這是解決方案。 任何人有任何ideea?項目加載速度更快

感謝

+0

你確定它不是你自己的初始化代碼使用一些時間嗎?只需加載一個900kb的exe文件不需要5秒鐘。 – 2009-10-28 02:49:47

+4

這裏有一些啓動速度提示:http://stackoverflow.com/questions/1115421/how-to-increase-the-startup-speed-of-the-delphi-app – 2009-10-28 02:54:02

+0

我在這裏把事件日誌(EventLog (ped.exe).txt)http://rigo.ro/temp/ 它加載和卸載很多次E_SKU327.dll和E_DAUDF1.dll – 2009-10-29 10:15:42

回答

1

我注意到,我的項目負荷E_SKU327.dll和E_DAUDF1.dll 20倍左右,那些文件屬於共享的打印機(愛普生Stylus),所以我從我的形式取出TPageSetupDialog,並立即加載:)

問題解決了 :)

+0

我沒有那麼多的空閒時間,只有現在我已經注意到了這一點 – 2009-10-29 10:29:59

1

通常情況下,它的感知速度是很重要的,而不是實際的速度。如果您可以儘快獲得啓動畫面並繼續初始化,那麼人們會看到更快。

另一個竅門是把大部分代碼到DLL和運行您的程序在Windows啓動時具有特殊的無形模式:

myprog.exe /sneaky 

可以說服的Windows,使得下一次離開你的DLL文件在內存中你的應用程序啓動,速度更快。

甚至在隱藏模式下保持內存運行,並且當用戶自己運行myprog.exe時,只需讓自己可見即可。

再一次,爲大部分功能使用延遲加載DLL(我們在UNIX下使用了這個DLL),以便它只在需要時加載。這會在整個執行時間內分攤加載過程,而不是在啓動時大受打擊。

這些都是我聽說過的一些技巧,可能還有其他的。

+2

我認爲「偷偷摸摸」的模式是濫用用戶,除非你絕對*知道*他們將使用您的程序。這意味着你迫使用戶在每次啓動時都等待你的程序,無論他們是否使用它。 – JosephStyons 2009-10-28 13:22:52

+0

是的,它是用戶濫用。這是我擺脫應用程序的第一件事情之一,我不經常運行(當然不是OOo,我使用它太多)。但它是一個狗吃狗的世界,如果它讓你的應用看起來更快,這是一個有效的方法。 – paxdiablo 2009-10-28 13:32:37

3

在我的一個項目中,我通過禁用窗體的自動創建而大大縮短了加載時間。只有在DPR中創建了mainform,其他所有的都是在需要時創建的。

+0

我已經這樣做:) – 2009-10-29 10:06:16

0

嘗試省略開始和初始化部分的代碼,並查看是否有任何改進,然後檢查哪一部分使您的應用程序在此情況下加載速度較慢。

如果您在打開文本文件的情況下測試啓動時間,請嘗試用SynEdit替換TMEMO(如果您使用的話),它甚至可以從記事本中加載文本文件;-)。

1

所有性能問題都可以通過查看執行的代碼來解決。

猜測造成性能問題的原因可能是您長時間旋轉車輪。當你遇到性能問題時,你需要分析你的代碼。德爾福有各種工具可以幫助你做到這一點。

其中一些是:在討論

這些和其它選項此Stack Overflow Question

有各種技術,以加快一次編碼你已經確定了問題所在。既然你已經確定了你想要改進的區域,那麼就應該對你的應用程序啓動進行簡介。

您可能會發現您創建的東西,例如表單,資源或其他對象不需要在啓動時創建。

通常,應用程序有多種方式可以啓動。由於你的應用程序是一個文本編輯器,我懷疑你可能有一個命令行,你可以指定你想要編輯的文件。分析不同的方式來啓動應用程序是確保真正瞭解性能改進的所有影響的關鍵。

相關問題