Warum ist DbContext.SaveChanges im Debug-Modus 10x langsamer?

Kann jemand erklären

Warum läuft DbContext.SaveChanges im Debug-Modus ~ 10x langsamer als im Produktionsmodus?Kann ich das auf irgendeine Weise beschleunigen?

Im Debug-Modus dauert das Laden meiner Webseite 116 Sekunden gegenüber 15 Sekunden, wenn ich das Projekt ohne Debugging starte.

Ich habe Trace-Anweisungen festgelegt und festgestellt, dass ~ 100 der 116 Sekunden in meiner DbContext.SaveChanges-Methode im Debug-Modus verbracht werden.

Führen Sie das Projekt aus, ohne nur 7 Sekunden im selben Abschnitt zu debuggen.

Lassen Sie mich in den Kommentaren wissen, wenn Sie weitere Informationen wünschen.

Projektaufbau:

ASP.NET-WebseiteVS2012SQLServer2012Entity Framework 5.0

Zusätzliche Informationen: (Lass es mich in den Kommentaren wissen, wenn du mehr brauchst)

Die kumulative Anzahl von SQL-Abfragen über die SaveChanges-Methode beträgt 20.000Produktionsverbindungszeichenfolge: Datenquelle = PC-DEV; Anfangskatalog = aspnet-2013-06-04; Integrierte Sicherheit = True; MultipleActiveResultSets = True; Anwendungsname = EntityFrameworkMUEDebug-Verbindungszeichenfolge: Datenquelle = PC-DEV; Anfangskatalog = aspnet-2013-06-04; Integrierte Sicherheit = True; MultipleActiveResultSets = True; Anwendungsname = EntityFrameworkMUEIch habe auch die gleiche relative Leistung mit LocalDB wie die Backing-Datenbank erlebt

Aktualisieren:

Wie @ruionwriting vorschlug, habe ich die Datenbank analysiert und festgestellt, dass die ~ 20.000 SQL-Befehle genau dieselbe Zeit benötigen, unabhängig davon, ob das Projekt im Debug- oder im Produktionsmodus ausgeführt wird. (0 ms pro Befehl).

Die durchschnittliche absolute Zeitdifferenz zwischen den 20.000 Befehlen beträgt im Debug-Modus jedoch 5 ms.

Im Gegensatz zum Produktionsmodus beträgt die durchschnittliche Zeitdifferenz über den Befehlssatz 0,3 ms.

Dies ist der ca. 10-fache Zeit-Leistungsunterschied und isoliert das Entity-Framework, da dies die zusätzliche Zeit im Debug-Modus beansprucht.

Gibt es eine Möglichkeit, den Debugbuild so zu konfigurieren, dass auf EntityFramework verwiesen werden kann, ohne Flags zu debuggen?

Und wenn ich irgendwie die Leistung durch Compilermagie wiedererlangen würde, was würde ich in Bezug auf die Debugging-Fähigkeiten verlieren? Momentan kann ich nicht in Entity-Framework-Code einsteigen, daher glaube ich nicht, dass ich etwas vermissen würde.

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage