.NET

System.Diagnostik.StackFrame-ydelsen forringes i Windows 10

System.Diagnostik.StackFrame-ydelsen forringes i Windows 10

Hvis efter at du opgraderer til Windows 10 eller .NET Framework 4.7.1, og du bemærker et markant fald i ydeevne, når du løber .NET Framework-applikationer, der bruger System.Diagnostik.StackFrame klasse, så dette indlæg kan interessere dig. Vi vil se på årsagen og derefter tilbyde kendte rettelser til fejlen.

System.Diagnostik.StackFrame-ydeevne forringes

En applikation, der havde acceptabel ydeevne, der kørte på .NET Framework 4.7 eller tidligere versioner udføres langsommere, når de kører på .NET Framework 4.7.1. Applikationer er typisk afhængige af StackFrame, når de kaster .NET-undtagelser. Hvis dette sker i høj hastighed (mere end 10 hændelser pr. Sekund), kan applikationer sænkes markant (tidoblet) og køre mærkbart langsommere end før.

Årsag til systemet.Diagnostik.StackFrame-ydeevne forringes

Det .NET Framework 4.7.1 i Windows 10 tilføjede understøttelse til detektering og parsing af det bærbare PDB-filformat for at vise fil- og linjenummeroplysninger i stakspor. Som en del af denne ændring kontrolleres hver definerende modul for hver funktion i et stakspor for at afgøre, om dette modul bruger det bærbare PDB-format. På grund af nogle forskelle i den interne cachepolitik bruger runtime langt mere tid på at søge på bærbare PDB'er end tidligere .NET Framework-versioner brugte på at søge efter klassiske Windows PDB'er.

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

Dette problem ændrer ikke antallet af undtagelser, der smides. Det mindsker imidlertid applikationernes evne til at håndtere disse undtagelser betydeligt.

Det er kendt, at applikationer, der bruger IKVM-biblioteket, påvirkes af dette problem, hvis de søger efter samlinger. Det er kendt, at det at undersøge samlinger forårsager undtagelser.

Fix System.Diagnostik.StackFrame-ydeevne nedbryder problemet

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 boolsk argument

Dette er den foretrukne løsning.

Hvis applikationsudviklere er i stand til at foretage ændringer i deres applikationer, skal du ringe til systemet.Diagnostik.StackTrace.#ctor (boolsk) konstruktør ved at bruge et falsk argument for at undgå at fange kildeoplysninger. Dette undgår det afsnit af koden, hvor ydeevnen mindskes.

2] Tilbagevend eller opgrader til den nyeste Windows 10-version

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

Håber dette hjælper!

Top 5 spiloptagelseskort
Vi har alle set og elsket streaming af gameplay på YouTube. PewDiePie, Jakesepticye og Markiplier er kun nogle af de bedste spillere, der har tjent mi...
Sådan udvikler du et spil på Linux
For et årti siden ville ikke mange Linux-brugere forudsige, at deres foretrukne operativsystem en dag ville være en populær spilplatform til kommercie...
Open Source-porte med kommercielle spilmotorer
Gratis, open source og cross-platform spilmotorgendringer kan bruges til at spille gamle såvel som nogle af de temmelig nylige spiltitler. Denne artik...