Le prestazioni di System.Diagnostics.StackFrame peggiorano in Windows 10

Se dopo l'aggiornamento a Windows 10 o .NET Framework 4.7.1 si nota un calo significativo delle prestazioni quando si eseguono applicazioni .NET Framework che utilizzano la classe System.Diagnostics.StackFrame , questo post potrebbe interessarti. Esamineremo la causa e quindi offriremo soluzioni note per l'errore.

Le prestazioni di System.Diagnostics.StackFrame peggiorano

Le prestazioni di System.Diagnostics.StackFrame peggiorano

Un'applicazione con prestazioni accettabili in esecuzione su .NET Framework 4.7 o versioni precedenti viene eseguita più lentamente durante l'esecuzione su .NET Framework 4.7.1 . Le applicazioni in genere si basano su StackFrame quando generano eccezioni .NET. Se ciò si verifica a una velocità elevata (più di 10 incidenti al secondo), le applicazioni possono rallentare in modo significativo (dieci volte) e funzionare notevolmente più lentamente di prima.

Causa del peggioramento delle prestazioni di System.Diagnostics.StackFrame(Cause of the System.Diagnostics.StackFrame performance degrade)

.NET Framework 4.7.1 in Windows 10 ha aggiunto il supporto per il rilevamento e l'analisi del formato di file PDB portatile per mostrare le informazioni sul numero di file e riga nelle tracce dello stack. Come parte di questa modifica, ogni funzione in una traccia dello stack ha il suo modulo di definizione controllato per determinare se quel modulo utilizza il formato Portable PDB . A causa(Due) di alcune differenze nei criteri di memorizzazione nella cache interna, il runtime dedica molto più tempo alla ricerca di PDB portatili(Portable PDBs) rispetto alle versioni precedenti di .NET Framework per la ricerca dei classici PDB di Windows(Windows PDBs) .

Ciò fa sì che le tracce di stack formattate vengano prodotte più lentamente rispetto a prima.

Questo problema non modifica il numero di eccezioni generate. Tuttavia, riduce notevolmente la capacità delle applicazioni di gestire tali eccezioni.

È noto che le applicazioni che utilizzano la libreria IKVM sono interessate da questo problema se rilevano gli assembly. È noto che l'analisi degli assembly causa eccezioni.

(Fix System.Diagnostics.StackFrame)Risolto il problema di peggioramento delle prestazioni di System.Diagnostics.StackFrame

Per risolvere questo problema, Microsoft consiglia di utilizzare uno dei seguenti metodi.

1] Utilizzare un costruttore diverso per StackFrame che accetta un argomento booleano(1] Use a different constructor for StackFrame that takes a Boolean argument)

Questa è la soluzione preferita.

Se gli sviluppatori di applicazioni sono in grado di apportare modifiche alle loro applicazioni, chiamare (call the) System.Diagnostics.StackTrace. #ctor( Boolean ) costruttore utilizzando un argomento falso per evitare di acquisire le informazioni sull'origine. Ciò evita la sezione del codice in cui le prestazioni sono ridotte.

2] Rollback o aggiornamento all'ultima versione di Windows 10(2]  Rollback or upgrade to the latest Windows 10 version)

In questo metodo, torna alla versione/build precedente o esegui upgrade to the latest version/build  di Windows 10 se riscontri questo problema e al momento non stai utilizzando l'ultima versione di Windows 10 . Disinstalla anche .NET Framework 4.7.1 se presente, dal tuo computer e poi scarica(download) e installa una versione precedente o l'ultima versione di .NET Framework .

Hope this helps!



About the author

Sono un revisore di software ed esperto di produttività. Revisiono e scrivo recensioni di software per varie applicazioni software, come Excel, Outlook e Photoshop. Le mie recensioni sono ben informate e forniscono informazioni obiettive sulla qualità dell'applicazione. Scrivo recensioni di software dal 2007.



Related posts