2015-10-16 32 views
8

從VS2013升級到VS2015後,我驚訝於我的Web應用程序運行時連接調試器的速度有多慢。所以我決定用MiniProfiler分析一個特別慢的頁面做VS2013和VS2015之間的比較:Visual Studio 2015調試器 - 對SqlCommand的高性能影響

Comparison in Mini Profiler 有趣的是,使用VS2013調試時,IIS然後IIS快遞下的頁面加載速度更快。但是當在VS2015中進行調試時,IIS比IIS Express慢得多。

此外,MiniProfiler指出在SQL相關代碼中使用了大部分時間。所以,我嘗試使用dotTrace個人主頁上的IIS的頁面 - 一旦與VS2015調試器連接,以及一次不附:

dotTrace comparison

目前看來,在VS2015,CPU時間的比例非常高,在調試時(實時)花費在SqlCommand.ExecuteReader()上,而在調試器未連接的情況下,該方法非常高效。

我也在另一臺電腦上測試過這個結果。

我的應用程序使用ASP.NET MVC,NHibernate的,SQL服務器2014年,和我使用的是IIS 10

已與VS2015調試別人經歷緩慢的應用程序性能的連接,特別是運行SQL命令時?任何想法的根源是什麼以及如何解決它?

+0

如果您使用函數調用跟蹤進行配置文件調用的計數是否相同?探查器中的調用堆棧略有不同(調試有ExecuteFinish和AddAll,而不是調試不)。我想知道NH出於某種原因是在做更多還是不同的事情? –

+0

我敢打賭在2015年的診斷,包括事件記錄器(這可能是充滿了sql語句,我敢打賭)可能讓你失望。 http://i.stack.imgur.com/QWV4V.png去repro並檢查出來。看看你是否可以禁用這個功能,並從中獲得哪些性能優勢。 – Will

+1

@剛剛嘗試禁用診斷,並沒有區別。 – jonh

回答

0

在我的情況下,它確實有很多ado.net插入操作 的診斷的唯一選擇是在vs2015

禁用診斷在Viual Studio 2017 rc中,它是一樣的