Po aktualizacji z VS2013 na VS2015, byłem zszokowany tym, jak wolno działa moja aplikacja internetowa z załączonym debuggerem. Więc postanowiłem zrobić porównanie między VS2013 i VS2015 użyciu MiniProfiler analizować szczególnie powolne strony:Debugger Visual Studio 2015 - duży wpływ na SqlCommand
Co ciekawe, podczas debugowania przy użyciu VS2013, strona ładuje się szybciej pod IIS następnie IIS Express. Ale podczas debugowania w VS2015, IIS jest znacznie wolniejszy niż IIS Express.
Ponadto MiniProfiler wskazuje, że znaczna część czasu jest używana w kodzie powiązanym z SQL. Tak próbowałem przy użyciu dotTrace do profilu strony na IIS - raz z dołączonym debugera VS2015, a raz bez niego załączone: Wydaje
że podczas debugowania w VS2015, bardzo wysoki procent czasu procesora (w czasie rzeczywistym) spędza się na SqlCommand.ExecuteReader(), podczas gdy debugger nie jest dołączony, ta metoda jest dość wydajna.
Przetestowałem to również na innym komputerze z takimi samymi wynikami.
Moja aplikacja używa ASP.NET MVC NHibernate, SQL Server 2014 i używam IIS 10
Czy ktokolwiek inny doświadczyła niska wydajność aplikacji z debugera VS2015 przywiązany, szczególnie podczas uruchamiania poleceń SQL? Jakieś pomysły, co jest główną przyczyną i jak ją rozwiązać?
Jeśli profilujesz ze śledzeniem wywołania funkcji, czy połączenie jest takie samo? Stosy wywołań w profilerze wyglądają nieco inaczej (debugowanie ma ExecuteFinish i AddAll, gdzie debugowanie nie jest możliwe). Zastanawiam się, czy NH robi coś więcej lub innego z jakiegoś powodu? –
Założę się, że diagnostyka w 2015 r., W tym rejestrator zdarzeń (prawdopodobnie zakładka wypełniona słowami sql, zakładam) prawdopodobnie Cię niepokoi. http://i.stack.imgur.com/QWV4V.png Przejdź do repro i sprawdź to. Sprawdź, czy możesz wyłączyć to i jakie korzyści z tego płyną. – Will
@Will Po prostu próbowałem wyłączyć diagnostykę i nie robiło to żadnej różnicy. – jonh