El rendimiento de System.Diagnostics.StackFrame se degrada en Windows 10

Si después de actualizar a Windows 10 o .NET Framework 4.7.1 , nota una disminución significativa en el rendimiento cuando ejecuta aplicaciones de .NET Framework que usan la clase System.Diagnostics.StackFrame , entonces esta publicación podría interesarle. Analizaremos la causa y luego ofreceremos soluciones conocidas para el error.

Degradación del rendimiento de System.Diagnostics.StackFrame

Degradación del rendimiento de System.Diagnostics.StackFrame

Una aplicación que tenía un rendimiento aceptable ejecutándose en .NET Framework 4.7 o versiones anteriores se ejecuta más lentamente cuando se ejecuta en .NET Framework 4.7.1 . Las aplicaciones suelen confiar en StackFrame cuando lanzan excepciones de .NET. Si esto ocurre a un ritmo elevado (más de 10 incidentes por segundo), las aplicaciones pueden ralentizarse significativamente (diez veces) y ejecutarse notablemente más lentamente que antes.

Causa de la degradación del rendimiento de System.Diagnostics.StackFrame(Cause of the System.Diagnostics.StackFrame performance degrade)

.NET Framework 4.7.1 en Windows 10 agregó soporte para detectar y analizar el formato de archivo Portable PDB para(PDB) mostrar información de número de línea y archivo en seguimientos de pila. Como parte de este cambio, se verifica el módulo de definición de cada función en un seguimiento de pila para determinar si ese módulo usa el formato PDB portátil. (PDB)Debido(Due) a algunas diferencias en la política de almacenamiento en caché interno, el tiempo de ejecución dedica mucho más tiempo a buscar PDB portátiles(Portable PDBs) que las versiones anteriores de .NET Framework que dedican a buscar PDB clásicos de Windows(Windows PDBs) .

Esto hace que los seguimientos de pila formateados se produzcan más lentamente que antes.

Este problema no cambia el número de excepciones que se lanzan. Sin embargo, disminuye significativamente la capacidad de las aplicaciones para manejar esas excepciones.

Se sabe que las aplicaciones que usan la biblioteca IKVM se ven afectadas por este problema si buscan ensamblados. Se sabe que el sondeo de ensamblajes genera excepciones.

Solucionar(Fix System.Diagnostics.StackFrame) el problema de degradación del rendimiento de System.Diagnostics.StackFrame

Para resolver este problema, Microsoft recomienda utilizar cualquiera de los siguientes métodos.

1] Use un constructor diferente para StackFrame que tome un argumento booleano(1] Use a different constructor for StackFrame that takes a Boolean argument)

Esta es la solución preferida.

Si los desarrolladores de aplicaciones pueden realizar cambios en sus aplicaciones, llame a (call the) System.Diagnostics.StackTrace. #ctor( Boolean ) constructor usando un argumento falso para evitar capturar información de origen. Esto evita la sección del código en la que se reduce el rendimiento.

2] Retroceder o actualizar a la última versión de Windows 10(2]  Rollback or upgrade to the latest Windows 10 version)

En este método, retroceda a la versión/compilación anterior o upgrade to the latest version/build  de Windows 10 si tiene este problema y actualmente no está ejecutando la última versión de Windows 10 . También desinstale .NET Framework 4.7.1 , si está presente, de su computadora y luego descargue(download) e instale una versión anterior o la última versión de .NET Framework .

Hope this helps!



About the author

Soy un experto experimentado en Windows 10 y 11/10, con experiencia tanto en navegadores como en aplicaciones para teléfonos inteligentes. He sido ingeniero de software durante más de 15 años y he trabajado con varias empresas de renombre, incluidas Microsoft, Google, Apple, Ubisoft y más. También he enseñado desarrollo de Windows 10/11 a nivel universitario.



Related posts