2011-02-14 39 views
6

我在這裏遇到了一些難題。我一直試圖加快某個功能,現在當我運行我的應用程序時,需要大約16-17秒來運行此功能。爲什麼我的代碼在運行Performance Analysis時速度更快?

現在如果我運行性能分析運行沿着它在VS2010,以便找到較慢的部分使用了相同的代碼執行〜6-7秒。現在,如果我的代碼確實運行得很快,那麼對於應用程序來說,這是完全可以接受的。

我試圖通過運行調試和釋放曲線的代碼(不PERF分析),幾乎沒有差別。

任何人有任何想法什麼可以在這裏發生的?

幾點注意事項:有問題的功能使用相當多的LINQ to SQL和使用性能分析IM是CPU採樣。

+0

Heisenbug。如果您在發佈模式下進行編譯(與調試相比),您會獲得相同的16-17秒嗎? – Robaticus

+0

你是否在VS之外運行該程序?使用附帶的調試器簡單地在VS中運行程序會禁用很多抖動優化。 – CodesInChaos

+0

Robaticus,是的(如上所述)。 CodeInChaos - 我注意到外部和內部VS之間有很大的區別,是的,但是我期待着這一點。 –

回答

4

我相信你應該專注於你的代碼中最慢的部分,反正優化他們,如果您發現比其他地方有什麼需要更長的時間,也不在乎在秒的絕對時間,但只是覺得相對的。

即使您看到整個應用程序在7秒鐘內執行,如果有方法佔用了整個時間的40%,請嘗試優化它們,那麼即使沒有啓用性能分析,您也一定會從中獲益,如果最初大約17秒,執行時間將會更多。

+0

+1的建議,你可以花時間優化,而不是研究爲什麼時差。 –

+0

嗯,是的,但問題是它在分析中「完全」優化,但不在外面。 –

1

你看到很多DLL的存在的,當你進入的非性能分析的情況下功能加載?我想知道是否輸入這個函數會導致大量的dll加載,在性能分析的情況下已經被加載過了。

+0

不是真的,沒有 - 或者至少沒有什麼不確定 –

+0

用日期時間戳記爲函數添加跟蹤語句,並嘗試縮小發生減速的位置,其中16-17秒來自哪裏,檢查寫入之前的時間函數調用,然後就像你進入的那樣,現在變得自由了,因爲這聽起來像你將不得不以舊式的方式進行你的性能分析。 –

+0

那麼,我已經設法找到問題 - 並修復了問題,但問題的目的是爲了解決問題,而不是如何解決這個問題 –

相關問題