System.Diagnostics.StackFrame ydeevne forringes i Windows 10

Hvis du efter du har opgraderet til Windows 10 eller .NET Framework 4.7.1 , og du bemærker et betydeligt fald i ydeevnen, når du kører .NET Framework-applikationer, der bruger System.Diagnostics.StackFrame -klassen, kan dette indlæg muligvis interessere dig. Vi vil se på årsagen og derefter tilbyde kendte rettelser til fejlen.

System.Diagnostics.StackFrame ydeevne forringes

System.Diagnostics.StackFrame ydeevne forringes

Et program, der havde acceptabel ydeevne på .NET Framework 4.7 eller tidligere versioner, kører langsommere, når det kører på .NET Framework 4.7.1 . Programmer er typisk afhængige af StackFrame, når de kaster .NET-undtagelser. Hvis dette sker med en høj hastighed (mere end 10 hændelser i sekundet), kan applikationer bremse betydeligt (tidoblet) og køre mærkbart langsommere end før.

Årsag til System.Diagnostics.StackFrame-ydeevnen forringes(Cause of the System.Diagnostics.StackFrame performance degrade)

.NET Framework 4.7.1 i Windows 10(Windows 10) tilføjede understøttelse til at detektere og parse det bærbare PDB -filformat for at vise fil- og linjenummeroplysninger i stakspor. Som en del af denne ændring får hver funktion i en stack-sporing sit definerende modul kontrolleret for at afgøre, om dette modul bruger det bærbare PDB -format. På grund(Due) af nogle forskelle i den interne cachingpolitik, bruger køretiden langt mere tid på at søge efter bærbare PDB'er(Portable PDBs) end tidligere .NET Framework- versioner brugt på at søge efter klassiske Windows PDB'er(Windows PDBs) .

Dette medfører, at formaterede stakspor produceres langsommere end før.

Dette problem ændrer ikke antallet af undtagelser, der kastes. Det reducerer dog betydeligt applikationers evne til at håndtere disse undtagelser.

Programmer, der bruger IKVM- biblioteket, er kendt for at være påvirket af dette problem, hvis de sonderer efter samlinger. Sondering efter samlinger er kendt for at forårsage undtagelser.

Løs problem med System.Diagnostics.StackFrame-(Fix System.Diagnostics.StackFrame) ydelsesforringelse

For at løse dette problem anbefaler Microsoft at bruge en af ​​følgende metoder.

1] Brug en anden konstruktør til StackFrame, der tager et boolesk argument(1] Use a different constructor for StackFrame that takes a Boolean argument)

Dette er den foretrukne løsning.

Hvis applikationsudviklere er i stand til at foretage ændringer i deres applikationer, skal du ringe til (call the) System.Diagnostics.StackTrace. #ctor( Boolean ) konstruktør ved at bruge et falsk argument for at undgå at fange kildeoplysninger. Dette undgår den del af koden, hvor ydeevnen er nedsat.

2] Rul tilbage eller opgrader til den seneste Windows 10-version(2]  Rollback or upgrade to the latest Windows 10 version)

I denne metode skal du rulle tilbage til den tidligere version/build eller upgrade to the latest version/build  af Windows 10 , hvis du oplever dette problem, og du i øjeblikket ikke kører den nyeste version af Windows 10 . Afinstaller også .NET Framework 4.7.1 , hvis det findes, fra din computer og download og installer derefter en tidligere version eller den seneste version af .NET Framework .

Hope this helps!



About the author

Jeg er telefoningeniør med over 10 års erfaring i mobilbranchen, og jeg er specialiseret i reparation og opgradering af smartphones. Mit arbejde har omfattet udvikling og vedligeholdelse af telefonfirmware, udvikling af billeder til Apple-enheder og arbejde med Firefox OS-projekter. Med mine færdigheder inden for softwareudvikling, hardware engineering, billedbehandling og Firefox OS-udvikling har jeg evnen til at tage komplekse problemer og omdanne dem til simple løsninger, der virker på enhver enhed.



Related posts