Kui pärast täiendamist Windows 10-le või .NET Framework 4.7.1 ja märkate jooksmisel märkimisväärset jõudluse langust .NET raamistiku rakendused, mis kasutavad Süsteem.Diagnostika.StackFrame klassi, siis võib see postitus teile huvi pakkuda. Vaatame selle põhjust ja pakume siis vea teadaolevaid parandusi.
Süsteem.Diagnostika.StackFrame'i jõudlus halveneb
Rakendus, millel oli .NET Framework 4.7 või vanemad versioonid töötavad aeglasemalt, kui töötate sellel .NET Framework 4.7.1. Rakendused toetuvad viskamisel tavaliselt StackFrame'ile .NET erandid. Kui see juhtub suure kiirusega (üle 10 juhtumi sekundis), võivad rakendused aeglustada märkimisväärselt (kümnekordselt) ja töötada tunduvalt aeglasemalt kui varem.
Süsteemi põhjus.Diagnostika.StackFrame'i jõudlus halveneb
The .NET Framework 4.7.1 Windows 10-s lisas tugi kaasaskantava PDB-failivormingu tuvastamiseks ja parsimiseks, et näidata faili- ja reanumbriteavet virnajälgedes. Selle muudatuse osana kontrollitakse iga virnajälje funktsiooni oma määratlevat moodulit, et teha kindlaks, kas see moodul kasutab vormingut Portable PDB. Sisemiste vahemällu salvestamise eeskirjade mõningate erinevuste tõttu kulutab käitamisaeg kaasaskantavate PDB-de otsimiseks palju rohkem aega kui eelmine .NET Framework'i versioonid veetsid klassikaliste Windowsi PDB-de otsimist.
See põhjustab vormindatud virnajälgede tootmise varasemast aeglasemalt.
See probleem ei muuda visatavate erandite arvu. Kuid see vähendab oluliselt rakenduste võimet neid erandeid käsitleda.
Teadaolevalt mõjutab see probleem IKVM-i teeki kasutavaid rakendusi, kui nad proovivad assambleesid. Teadaolevalt põhjustab assambleede proovimine erandeid.
Paranda süsteem.Diagnostika.StackFrame'i jõudlus halvendab probleemi
Selle probleemi lahendamiseks soovitab Microsoft kasutada ühte järgmistest meetoditest.
1] Kasutage StackFrame'i jaoks muud konstruktorit, mis võtab Boole'i argumendi
See on eelistatud lahendus.
Kui rakenduste arendajad saavad oma rakendusi muuta, helistage süsteemile.Diagnostika.StackTrace.#ctor (Boole'i) konstruktor, kasutades vale argumenti, et vältida lähteandmete hõivamist. See väldib koodi jaotist, milles jõudlus on vähenenud.
2] Taastage või värskendage uusimale Windows 10 versioonile
Selle meetodi abil saate tagasi minna Windows 10 eelmisele versioonile / ehitada või uuendada uusimale versioonile / järjele, kui teil on seda probleemi ja te ei tööta praegu Windows 10 uusimat versiooni. Samuti desinstallige .NET Framework 4.7.1, kui see on olemas, arvutist ning laadige alla ja installige eelmine versioon või uusim versioon .NET raamistik.
Loodan, et see aitab!