Výkon System.Diagnostics.StackFrame sa v systéme Windows 10 znižuje

Ak po inovácii na Windows 10 alebo .NET Framework 4.7.1 zaznamenáte výrazné zníženie výkonu pri spustení aplikácií .NET Framework, ktoré používajú triedu System.Diagnostics.StackFrame , tento príspevok by vás mohol zaujímať. (System.Diagnostics.StackFrame)Pozrieme sa na príčinu a potom ponúkneme známe opravy chyby.

Zhoršuje sa výkon System.Diagnostics.StackFrame

Zhoršuje sa výkon System.Diagnostics.StackFrame

Aplikácia s prijateľným výkonom spustená na rozhraní .NET Framework 4.7 alebo starších verziách sa pri spustení na (.NET Framework 4.7)rozhraní .NET Framework 4.7.1(.NET Framework 4.7.1) spúšťa pomalšie . Aplikácie sa zvyčajne spoliehajú na StackFrame, keď vyvolávajú výnimky .NET. Ak k tomu dôjde pri vysokej rýchlosti (viac ako 10 incidentov za sekundu), aplikácie sa môžu výrazne spomaliť (desaťnásobne) a bežať výrazne pomalšie ako predtým.

Príčina zníženia výkonu System.Diagnostics.StackFrame(Cause of the System.Diagnostics.StackFrame performance degrade)

Rozhranie .NET Framework 4.7.1 v systéme Windows 10(Windows 10) pridalo podporu na zisťovanie a analýzu formátu súboru Portable PDB na zobrazenie informácií o číslach súborov a riadkov v stopách zásobníka. V rámci tejto zmeny má každá funkcia v sledovaní zásobníka skontrolovaný svoj definujúci modul, aby sa zistilo, či tento modul používa formát Portable PDB . Kvôli(Due) niektorým rozdielom v internej politike ukladania do vyrovnávacej pamäte strávi runtime oveľa viac času hľadaním Portable PDB(Portable PDBs) ako predchádzajúce verzie .NET Framework , ktoré strávili hľadaním klasických Windows PDB(Windows PDBs) .

To spôsobí, že formátované stopy zásobníka sa budú vytvárať pomalšie ako predtým.

Tento problém nemení počet vyvolaných výnimiek. Výrazne však znižuje schopnosť aplikácií zvládnuť tieto výnimky.

Je známe, že aplikácie, ktoré používajú knižnicu IKVM , sú ovplyvnené týmto problémom, ak hľadajú zostavy. Je známe, že vyhľadávanie zostáv spôsobuje výnimky.

Opravte(Fix System.Diagnostics.StackFrame) problém so znížením výkonu System.Diagnostics.StackFrame

Na vyriešenie tohto problému spoločnosť Microsoft(Microsoft) odporúča použiť niektorú z nasledujúcich metód.

1] Použite iný konštruktor pre StackFrame, ktorý preberá booleovský argument(1] Use a different constructor for StackFrame that takes a Boolean argument)

Toto je preferované riešenie.

Ak sú vývojári aplikácií schopní vykonávať zmeny vo svojich aplikáciách, zavolajte na (call the) System.Diagnostics.StackTrace. #ctor( booleovský(Boolean) ) konštruktor pomocou nesprávneho argumentu, aby sa zabránilo zachytávaniu zdrojových informácií. Tým sa vyhnete časti kódu, v ktorej je znížený výkon.

2] Vráťte späť alebo inovujte na najnovšiu verziu systému Windows 10(2]  Rollback or upgrade to the latest Windows 10 version)

Pri tejto metóde sa vráťte späť na predchádzajúcu verziu/zostavu alebo upgrade to the latest version/build  Windowsu 10(Windows 10) , ak máte tento problém a momentálne nepoužívate najnovšiu verziu Windowsu 10(Windows 10) . Tiež odinštalujte .NET Framework 4.7.1 , ak je k dispozícii, z vášho počítača a potom si stiahnite(download) a nainštalujte predchádzajúcu verziu alebo najnovšiu verziu .NET Framework .

Hope this helps!



About the author

Mám vzdelanie v oblasti počítačového inžinierstva a informačných technológií, čo mi dalo jedinečný pohľad na platformy Windows 10 a 11. Najmä mám skúsenosti s Windows 10 " Desktop Experience " a prehliadačom Microsoft Edge. Moje skúsenosti s týmito dvoma platformami mi umožňujú hlboko pochopiť, ako fungujú, a moje odborné znalosti v týchto oblastiach mi umožňujú poskytovať spoľahlivé rady, ako ich zlepšiť.



Related posts