2010-03-22 78 views
3

要Improvide C#.NET應用程序的性能..提高應用程序性能

在我的應用我使用第三方的Interop/DLL到進程.doc文件。

這是一個簡單的操作, 其中通過輸入/輸出FilePath Interop DLL ... & DLL將執行文本格式輸入文件。

爲了提高性能我曾嘗試,

  1. 執行2 therad處理32個文件。(每個線程處理16個文件)
  2. 通過創建2個新的應用程序域(每個應用程序域碼過程16頁的文件執行的應用程序代碼)
  3. 執行代碼使用TPL(任務中並行庫)

但所有選項需要大約同一時間(32秒)來處理32個文件。手動過程花費相同的32秒來處理32個文件。

剛剛試過一件事..當我創建了示例exe來處理16個文件作爲輸入&輸出引用在TextBox中給出的路徑。

..我打開2個exe實例進行處理。 1 EXE具有不同16個輸入文件&輸出與輸入文件路徑創建 2的exe具有不同16輸入文件&輸出創建與輸入文件路徑

當我點擊兩者的exe的開始按鈕..它使用100%的CPU &顯着利用兩個核心&進程32個文件在16秒內完成。

我們可以提供這種明確的prallism來提高我的應用程序性能嗎?

+1

您是否嘗試過詳細分析應用程序?如果I/O是緩慢的主要來源,那麼你不能通過並行來解決它。 – kennytm 2010-03-22 08:46:53

回答

1

要走的路是分析你的應用程序,看看它花費的時間。然後你可以計劃優化瓶頸。試圖在不知道緩慢部分在哪裏的情況下進行優化並不是在黑暗中刺傷你的時間的最佳方式,希望能夠有所作爲。找出問題所在,並直接解決問題。

有幾個問題推薦配置文件。檢查出this questionthis question

0

問題可能是您的第三方工具在線程之間以某種方式同步。如果它使用單線程(「STA」)COM組件來完成這項工作,這可能會隱含地發生。您可以通過在調試器中運行時中斷應用程序來驗證這一點,並查看worker和UI線程的調用堆棧。