Dopo l'aggiornamento da VS2013 a VS2015, sono rimasto scioccato dal rallentamento della mia applicazione Web con il debugger collegato. Così ho deciso di fare un confronto tra il VS2013 e VS2015 utilizzando MiniProfiler per analizzare una pagina particolarmente lento:Debugger di Visual Studio 2015: impatto elevato sulle prestazioni di SqlCommand
interessante notare che quando il debug utilizzando VS2013, la pagina viene caricata velocemente sotto IIS quindi IIS Express. Ma quando si esegue il debug in VS2015, IIS è molto più lento di IIS Express.
Inoltre, MiniProfiler indica che un'alta percentuale del tempo viene utilizzata nel codice relativo a SQL. Così ho provato ad utilizzare dotTrace al profilo pagina su IIS - una volta con il debugger VS2015 attaccato, e una volta senza di essa legato:
Sembra che durante il debug in VS2015, una percentuale molto elevata di tempo di CPU (in tempo reale) viene speso su SqlCommand.ExecuteReader() mentre con il debugger non collegato, tale metodo è piuttosto efficiente.
Ho anche provato questo su un altro computer con gli stessi risultati.
La mia applicazione utilizza ASP.NET MVC, NHibernate, SQL Server 2014, e sto usando IIS 10
Qualcuno ha altrimenti sperimentato le prestazioni delle applicazioni lento con il debugger VS2015 allegato, in particolare durante l'esecuzione di comandi SQL? Qualche idea qual è la causa alla radice e come risolverla?
Se il profilo con il tracciamento delle chiamate di funzione, la chiamata conta allo stesso modo? Gli stack di chiamate nel profiler sembrano leggermente diversi (il debug ha ExecuteFinish e AddAll dove non esegue il debug). Mi chiedo se l'NH sta facendo più o cose diverse per qualche motivo? –
Scommetto che la diagnostica del 2015, incluso il registratore di eventi (che probabilmente è pieno zeppo di istruzioni SQL, scommetto) probabilmente ti fa impantanare. http://i.stack.imgur.com/QWV4V.png Vai a ripetere e controlla. Verifica se è possibile disabilitarlo e quali sono le prestazioni a tuo vantaggio. – Will
@Will Ho appena provato a disattivare la diagnostica e non ha fatto alcuna differenza. – jonh