2015-10-13 50 views
1

我正在幫助修復舊WPF應用程序的性能問題,我們遇到的一個主要問題是如果從調試模式啓動時應用程序運行速度較慢與直接從/ bin文件夾運行應用程序相比,Visual Studio。WPF:應用程序在Visual Studio調試模式下的運行速度比可執行文件慢得多

比較:

+------------+------+ 
| Run Mode | Time | 
+------------+------+ 
| Debug Mode | 106s | 
| Executable | 17s | 
+------------+------+ 

由於我的WPF知識是非常基本的,它不是一個應用程序,我一直在工作,我沒有得到什麼線索尋找。

有什麼建議可能會導致這種差異? PS:無需調試即可啓動(Ctrl + F5),其運行速度與可執行文件一樣快,因此似乎是調試模式開銷。

+0

試圖優化Debug構建沒有任何意義。它意味着可調試,自動也會使其變慢。只有使用小數據集才能調試程序,大數據集只能用於增加鬍子。如果調試版本使用F5速度較慢並且使用Ctrl + F5速度較快,請查看「輸出」窗口。美元甜甜圈你會看到很多東西,調試輸出和/或異常通知。這並不便宜。你打算看看它,如果你不想看到它,然後右鍵單擊輸出窗口並關閉勾選的項目。 –

+1

可能是由某些模塊中的處理異常引起的。應修復VS2015和.NET 4.6,請參閱https://blogs.msdn.microsoft.com/visualstudioalm/2015/02/23/performance-improvement-when-debugging-net-code-with-visual-studio-2015/ – xmedeko

回答

4

在Visual Studio中以調試模式運行的應用程序在與VS調試器通信時會遇到很多開銷。它們的輸出,狀態和事件會被記錄下來,從而降低速度。

在進化計算中運行實驗時,我經歷了一段時間。我會首先從Visual Studio啓動控制檯應用程序,通過直接從文件系統啓動來創建新實例。從文件系統啓動的運行速度會更快,甚至會超過在VS調試模式下啓動的那個。

試着冷靜一下。調試模式總是比較慢。如果你想要的是速度,我建議構建項目,然後直接從文件系統啓動它。

+0

一位同事並沒有同樣的問題,對他來說並不慢。如果我們假設排除硬件差異,可能還有其他因素,例如緩存或讀取臃腫的臨時文件夾結構,這可能會產生影響? – Spikee

+0

在調試時觀察輸出窗口。如果它氾濫,你可能會遇到一些不良的綁定或不必要的調試輸出。如果他的輸出窗口關閉,您的同事可能沒有遇到同樣的問題。 –

1

造成這種差異的原因是在調試模式中默認關閉所有代碼優化。這是因爲當二進制代碼與源代碼直接對應時,調試更容易。

+0

這是一個很好的觀點,你應該嘗試運行自己的調試版本,並在調試器下釋放版本。這可能會給你一些洞察力的原因。根據我的經驗,雖然您所談論的數量級的差異通常是由非常糟糕的代碼產生大量例外的結果。 –

相關問題