System.Diagnostics.StackFrame prestanda försämras i Windows 10

Om du efter att du har uppgraderat till Windows 10 eller .NET Framework 4.7.1 märker en betydande minskning av prestanda när du kör .NET Framework-program som använder klassen System.Diagnostics.StackFrame , kan det här inlägget intressera dig. Vi kommer att titta på orsaken och sedan erbjuda kända korrigeringar för felet.

System.Diagnostics.StackFrame prestanda försämras

System.Diagnostics.StackFrame prestanda försämras

Ett program som hade acceptabel prestanda på .NET Framework 4.7 eller tidigare versioner körs långsammare när det körs på .NET Framework 4.7.1 . Applikationer förlitar sig vanligtvis på StackFrame när de skapar .NET-undantag. Om detta inträffar i hög takt (mer än 10 incidenter per sekund) kan applikationer sakta ner betydligt (tiofaldigt) och köra märkbart långsammare än tidigare.

Orsak till System.Diagnostics.StackFrames prestanda försämras(Cause of the System.Diagnostics.StackFrame performance degrade)

.NET Framework 4.7.1 i Windows 10(Windows 10) lade till stöd för att upptäcka och analysera det portabla PDB -filformatet för att visa fil- och radnummerinformation i stackspår. Som en del av denna förändring har varje funktion i en stackspårning sin definierande modul kontrollerad för att avgöra om den modulen använder det Portable PDB -formatet. (Due) grund av vissa skillnader i den interna cachelagringspolicyn ägnar körtiden mycket mer tid åt att söka efter bärbara PDB:er(Portable PDBs) än tidigare .NET Framework - versioner ägnade åt att söka efter klassiska Windows PDB:er(Windows PDBs) .

Detta gör att formaterade stackspår produceras långsammare än tidigare.

Det här problemet ändrar inte antalet undantag som slängs. Det minskar dock avsevärt applikationernas förmåga att hantera dessa undantag.

Applikationer som använder IKVM- biblioteket är kända för att påverkas av det här problemet om de söker efter sammansättningar. Att sondera efter sammansättningar är känt för att orsaka undantag.

Åtgärda(Fix System.Diagnostics.StackFrame) problem med System.Diagnostics.StackFrame-prestandaförsämring

För att lösa det här problemet rekommenderar Microsoft att du använder någon av följande metoder.(Microsoft)

1] Använd en annan konstruktor för StackFrame som tar ett booleskt argument(1] Use a different constructor for StackFrame that takes a Boolean argument)

Detta är den föredragna lösningen.

Om applikationsutvecklare kan göra ändringar i sina applikationer, ring (call the) System.Diagnostics.StackTrace. #ctor( Boolean ) konstruktor genom att använda ett falskt argument för att undvika att fånga källinformation. Detta undviker den del av koden där prestandan minskar.

2] Återställ eller uppgradera till den senaste Windows 10-versionen(2]  Rollback or upgrade to the latest Windows 10 version)

I den här metoden, rulla tillbaka till den tidigare versionen/byggen eller upgrade to the latest version/build  av Windows 10 om du upplever det här problemet och du för närvarande inte kör den senaste versionen av Windows 10 . Avinstallera även .NET Framework 4.7.1 om det finns, från din dator och ladda sedan ner(download) och installera en tidigare version eller den senaste versionen av .NET Framework .

Hope this helps!



About the author

Jag är en erfaren Windows 10 och 11/10 expert, med erfarenhet av både webbläsare och smartphone-appar. Jag har varit mjukvaruingenjör i över 15 år och har arbetat med ett antal stora namnföretag, inklusive Microsoft, Google, Apple, Ubisoft med flera. Jag har också undervisat i Windows 10/11-utveckling på högskolenivå.



Related posts