Degradação de desempenho de System.Diagnostics.StackFrame no Windows 10

Se depois de atualizar para o Windows 10 ou .NET Framework 4.7.1 e você notar uma diminuição significativa no desempenho ao executar aplicativos do .NET Framework que usam a classe System.Diagnostics.StackFrame , esta postagem pode ser do seu interesse. Analisaremos a causa e, em seguida, ofereceremos correções conhecidas para o erro.

Degradação do desempenho do System.Diagnostics.StackFrame

Degradação do desempenho do System.Diagnostics.StackFrame

Um aplicativo com desempenho aceitável em execução no .NET Framework 4.7 ou em versões anteriores é executado mais lentamente ao ser executado no .NET Framework 4.7.1 . Os aplicativos normalmente dependem do StackFrame quando lançam exceções .NET. Se isso ocorrer em uma taxa alta (mais de 10 incidentes por segundo), os aplicativos podem ficar significativamente mais lentos (dez vezes) e executar visivelmente mais lento do que antes.

Causa da degradação de desempenho de System.Diagnostics.StackFrame(Cause of the System.Diagnostics.StackFrame performance degrade)

O .NET Framework 4.7.1 no Windows 10 adicionou suporte para detectar e analisar o formato de arquivo PDB portátil para mostrar informações de arquivo e número de linha em rastreamentos de pilha. Como parte dessa alteração, cada função em um rastreamento de pilha tem seu módulo de definição verificado para determinar se esse módulo usa o formato PDB portátil . Devido(Due) a algumas diferenças na política de cache interna, o tempo de execução gasta muito mais tempo procurando por PDBs Portáteis do(Portable PDBs) que as versões anteriores do .NET Framework gastas procurando por PDBs clássicos do Windows(Windows PDBs) .

Isso faz com que os rastreamentos de pilha formatados sejam produzidos mais lentamente do que antes.

Esse problema não altera o número de exceções lançadas. No entanto, diminui significativamente a capacidade dos aplicativos de lidar com essas exceções.

Os aplicativos que usam a biblioteca IKVM são afetados por esse problema se investigarem assemblies. A sondagem de assemblies é conhecida por causar exceções.

Correção do(Fix System.Diagnostics.StackFrame) problema de degradação de desempenho do System.Diagnostics.StackFrame

Para resolver esse problema, a Microsoft recomenda usar um dos seguintes métodos.

1] Use um construtor diferente para StackFrame que receba um argumento booleano(1] Use a different constructor for StackFrame that takes a Boolean argument)

Esta é a solução preferida.

Se os desenvolvedores de aplicativos puderem fazer alterações em seus aplicativos, chame o (call the) System.Diagnostics.StackTrace. #ctor( Boolean ) construtor usando um argumento falso para evitar a captura de informações de origem. Isso evita a seção do código em que o desempenho é reduzido.

2] Reverter ou atualizar para a versão mais recente do Windows 10(2]  Rollback or upgrade to the latest Windows 10 version)

Nesse método, reverta para a versão/compilação anterior ou upgrade to the latest version/build  do Windows 10 se estiver enfrentando esse problema e não estiver executando a versão mais recente do Windows 10 . Desinstale também o .NET Framework 4.7.1 , se presente, do seu computador e, em seguida, baixe(download) e instale uma versão anterior ou a versão mais recente do .NET Framework .

Hope this helps!



About the author

Sou um técnico que atua na área de áudio e contas de usuários há muitos anos. Tenho experiência com computadores Windows e Mac, bem como com produtos da Apple. Também ensino o uso de produtos Apple desde 2007. Minhas principais áreas de especialização são contas de usuário e segurança familiar. Além disso, tenho experiência com vários programas de software, incluindo Windows 7 Home Premium, 8.1 Pro, 10 Pro e 12.9 Mojave.



Related posts