De prestaties van System.Diagnostics.StackFrame nemen af ​​in Windows 10

Als u na een upgrade naar Windows 10 of .NET Framework 4.7.1 merkt dat de prestaties aanzienlijk afnemen wanneer u .NET Framework-toepassingen uitvoert die de klasse System.Diagnostics.StackFrame gebruiken , dan is dit bericht wellicht interessant voor u. We zullen naar de oorzaak kijken en vervolgens bekende oplossingen voor de fout aanbieden.

Prestaties van System.Diagnostics.StackFrame nemen af

Prestaties van System.Diagnostics.StackFrame nemen af

Een toepassing die acceptabele prestaties had op .NET Framework 4.7 of eerdere versies, wordt langzamer uitgevoerd op .NET Framework 4.7.1 . Toepassingen vertrouwen doorgaans op StackFrame wanneer ze .NET-uitzonderingen genereren. Als dit in een hoog tempo gebeurt (meer dan 10 incidenten per seconde), kunnen applicaties aanzienlijk vertragen (tienvoudig) en merkbaar langzamer werken dan voorheen.

Oorzaak van de prestatievermindering van System.Diagnostics.StackFrame(Cause of the System.Diagnostics.StackFrame performance degrade)

Het .NET Framework 4.7.1 in Windows 10 heeft ondersteuning toegevoegd voor het detecteren en parseren van het Portable PDB -bestandsformaat om bestands- en regelnummerinformatie in stacktraces weer te geven. Als onderdeel van deze wijziging wordt voor elke functie in een stacktracering de definiërende module gecontroleerd om te bepalen of die module het Portable PDB -formaat gebruikt. Vanwege(Due) enkele verschillen in het interne cachingbeleid besteedt de runtime veel meer tijd aan het zoeken naar draagbare PDB's(Portable PDBs) dan eerdere .NET Framework - versies die werden besteed aan het zoeken naar klassieke Windows PDB's .

Dit zorgt ervoor dat geformatteerde stacktraces langzamer worden geproduceerd dan voorheen.

Dit probleem heeft geen invloed op het aantal uitzonderingen dat wordt gegenereerd. Het vermindert echter aanzienlijk het vermogen van toepassingen om die uitzonderingen af ​​te handelen.

Van toepassingen die de IKVM- bibliotheek gebruiken, is bekend dat ze last hebben van dit probleem als ze naar assembly's zoeken. Het is bekend dat het zoeken naar assemblages uitzonderingen veroorzaakt.

(Fix System.Diagnostics.StackFrame)Probleem met verslechtering van de prestaties van System.Diagnostics.StackFrame oplossen

Om dit probleem op te lossen, raadt Microsoft aan een van de volgende methoden te gebruiken.

1] Gebruik een andere constructor voor StackFrame die een Booleaans argument nodig heeft(1] Use a different constructor for StackFrame that takes a Boolean argument)

Dit is de voorkeursoplossing.

Als applicatieontwikkelaars wijzigingen in hun applicaties kunnen aanbrengen, roept u de (call the) System.Diagnostics.StackTrace aan. (System.Diagnostics.StackTrace.)#ctor( Boolean ) constructor door een vals argument te gebruiken om te voorkomen dat broninformatie wordt vastgelegd. Dit vermijdt het gedeelte van de code waarin de prestaties worden verminderd.

2] Terugdraaien of upgraden naar de nieuwste Windows 10-versie(2]  Rollback or upgrade to the latest Windows 10 version)

Ga bij deze methode terug naar de vorige versie/build of upgrade to the latest version/build  van Windows 10 als u dit probleem ondervindt en momenteel niet de nieuwste versie van Windows 10 gebruikt . Verwijder ook .NET Framework 4.7.1 , indien aanwezig, van uw computer en download en installeer vervolgens een eerdere versie of de nieuwste versie van .NET Framework .

Hope this helps!



About the author

Ik ben een ervaren software engineer, met meer dan 10 jaar ervaring in het ontwikkelen en onderhouden van Microsoft Office applicaties. Ik heb een sterke passie om anderen te helpen hun doelen te bereiken, zowel door mijn werk als software engineer als door mijn spreek- en netwerkvaardigheden. Ik ben ook zeer goed geïnformeerd over hardware- en toetsenbordstuurprogramma's, aangezien ik er veel zelf heb ontwikkeld en getest.



Related posts