Może ktoś wyjaśnićDlaczego DbContext.SaveChanges 10x wolniej w trybie debugowania
- Dlaczego DbContext.SaveChanges uruchomić ~ 10x wolniej niż w trybie debugowania trybie produkcyjnym?
- Czy mogę to przyspieszyć?
W trybie debugowania strona internetowa zajmuje 116 sekund, aby załadować w porównaniu do 15 sekund, jeśli rozpocznę projekt bez debugowania.
Mam ustawione zestawienia śledzenia i stwierdziłem, że ~ 100 z 116 sekund jest używane w mojej metodzie DbContext.SaveChanges w trybie debugowania.
Uruchamianie projektu bez debugowania trwa tylko 7 sekund w tej samej sekcji.
Dajcie znać w komentarzach, jeśli chcesz uzyskać więcej informacji ..
Ustawienia projektu:
- strona ASP.NET
- VS2012
- SQLServer2012
- Entity Framework 5.0
Dodatek l Info: (Daj mi znać w komentarzach, jeśli potrzebujesz więcej)
- Numer skumulowana SQL zapytań ponad metody SaveChanges jest 20000
- Production Connection String: Data Source = PC-DEV; Initial Catalog = aspnet-2013-06-04, Integrated Security = True; MultipleActiveResultSets = True; Nazwa aplikacji = EntityFrameworkMUE
- Ciąg połączenia debugowania: Źródło danych = PC-DEV; Początkowy katalog = aspnet-2013-06-04; Integrated Security = True ; MultipleActiveResultSets = True; Nazwa aplikacji = EntityFrameworkMUE
- Doświadczyłem również tej samej względnej wydajności z LocalDB jako bazy danych
Aktualizacja:
Jak @ruionwriting zasugerował, że profilowane bazy danych i co znalazłem jest to, że ~ 20.000 polecenia SQL wziąć dokładnie ten sam czas, czy projekt jest prowadzony w trybie debugowania lub produkcyjnym. (0 ms na polecenie).
Jednak różnica bezwzględna czasu pomiędzy 20 000 poleceń wynosi średnio 5 ms w trybie debugowania.
W odróżnieniu od trybu produkcji, średnia różnica czasu w stosunku do zestawu poleceń wynosi 0.3 ms.
Jest to przybliżona 10-krotna różnica wydajności i izoluje strukturę encji jako czas poświęcony na debugowanie.
Czy istnieje sposób konfiguracji kompilacji debugowania, aby można było odwoływać się do EntityFramework bez debugowania flag?
A jeśli miałbym w jakiś sposób osiągnąć wydajność przez jakąś magię kompilatora, co bym stracił pod względem możliwości debugowania? Obecnie nie mogę wkroczyć w kod struktury encji, więc nie sądzę, żebym tęsknił za niczym.
Dzięki!
Jak ciąg połączenia wyglądać, podczas debugowania? – RealityDysfunction
@RealityDysfunction zaktualizował pytanie ciągiem w trybach produkcji i debugowania. – Jesse
Czy masz zaznaczone "Włącz tylko mój kod" w VS? W menu Debuguj-> Opcje i ustawienia-> Ogólne-> Włącz tylko mój kod. Może masz to niezaznaczone, a VS próbuje debugować EF? – Tombala