System.Diagnostics.StackFrame-Leistungsminderung in Windows 10

Wenn Sie nach dem Upgrade auf Windows 10 oder .NET Framework 4.7.1 einen erheblichen Leistungsabfall bemerken, wenn Sie .NET Framework-Anwendungen ausführen, die die System.Diagnostics.StackFrame -Klasse verwenden, könnte Sie dieser Beitrag interessieren. Wir werden uns die Ursache ansehen und dann bekannte Lösungen für den Fehler anbieten.

System.Diagnostics.StackFrame-Leistungsverschlechterung

System.Diagnostics.StackFrame-Leistungsverschlechterung

Eine Anwendung mit akzeptabler Leistung, die auf .NET Framework 4.7 oder früheren Versionen ausgeführt wird, wird langsamer ausgeführt, wenn sie auf .NET Framework 4.7.1 ausgeführt wird . Anwendungen verlassen sich normalerweise auf StackFrame, wenn sie .NET-Ausnahmen auslösen. Wenn dies mit einer hohen Rate auftritt (mehr als 10 Vorfälle pro Sekunde), können Anwendungen erheblich langsamer werden (zehnfach) und merklich langsamer als zuvor ausgeführt werden.

Ursache der System.Diagnostics.StackFrame-Leistungsverschlechterung(Cause of the System.Diagnostics.StackFrame performance degrade)

Das .NET Framework 4.7.1 in Windows 10 hat Unterstützung für das Erkennen und Analysieren des Portable PDB -Dateiformats hinzugefügt, um Datei- und Zeilennummerninformationen in Stacktraces anzuzeigen. Als Teil dieser Änderung wird das definierende Modul jeder Funktion in einem Stack-Trace überprüft, um festzustellen, ob dieses Modul das Portable PDB -Format verwendet. Aufgrund(Due) einiger Unterschiede in der internen Caching-Richtlinie verbringt die Laufzeitumgebung viel mehr Zeit mit der Suche nach portablen PDBs(Portable PDBs) als frühere .NET Framework- Versionen mit der Suche nach klassischen Windows-PDBs .

Dies führt dazu, dass formatierte Stacktraces langsamer als zuvor erzeugt werden.

Dieses Problem ändert nicht die Anzahl der ausgelösten Ausnahmen. Es verringert jedoch erheblich die Fähigkeit von Anwendungen, diese Ausnahmen zu behandeln.

Anwendungen, die die IKVM -Bibliothek verwenden, sind bekanntermaßen von diesem Problem betroffen, wenn sie nach Assemblys suchen. Es ist bekannt, dass das Prüfen auf Assemblys Ausnahmen verursacht.

(Fix System.Diagnostics.StackFrame)Beheben Sie das Problem mit der System.Diagnostics.StackFrame- Leistungsverschlechterung

Um dieses Problem zu beheben, empfiehlt Microsoft die Verwendung einer der folgenden Methoden.

1] Verwenden Sie einen anderen Konstruktor für StackFrame, der ein boolesches Argument akzeptiert(1] Use a different constructor for StackFrame that takes a Boolean argument)

Dies ist die bevorzugte Lösung.

Wenn Anwendungsentwickler Änderungen an ihren Anwendungen vornehmen können, rufen (call the) Sie System.Diagnostics.StackTrace auf. (System.Diagnostics.StackTrace.)#ctor( Boolean )-Konstruktor, indem ein falsches Argument verwendet wird, um das Erfassen von Quellinformationen zu vermeiden. Dadurch wird der Abschnitt des Codes vermieden, in dem die Leistung verringert wird.

2] Rollback oder Upgrade auf die neueste Windows 10-Version(2]  Rollback or upgrade to the latest Windows 10 version)

Führen Sie bei dieser Methode ein Rollback auf die vorherige Version/den vorherigen Build durch oder führen Sie ein upgrade to the latest version/build  von Windows 10 durch , wenn dieses Problem auftritt und Sie derzeit nicht die neueste Version von Windows 10 ausführen(Windows 10) . Deinstallieren Sie auch .NET Framework 4.7.1 , falls vorhanden, von Ihrem Computer und laden Sie dann eine frühere Version oder die neueste Version von .NET Framework herunter(download) und installieren Sie sie .

Hope this helps!



About the author

Ich habe einen Hintergrund in Computertechnik und Informationstechnologie, der mir eine einzigartige Perspektive auf die Plattformen Windows 10 und 11 verschafft hat. Insbesondere bin ich sowohl mit der Windows 10 „Desktop Experience“ als auch mit dem Microsoft Edge-Browser erfahren. Meine Erfahrung mit diesen beiden Plattformen gibt mir ein tiefes Verständnis dafür, wie sie funktionieren, und mein Fachwissen in diesen Bereichen ermöglicht es mir, zuverlässige Ratschläge zu geben, wie sie verbessert werden können.



Related posts