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

Si después de actualizar a Windows 10 o .NET Framework 4.7.1y nota una disminución significativa en el rendimiento cuando ejecuta .RED Aplicaciones de marco que utilizan System.Diagnostics.StackFrame clase, entonces esta publicación puede interesarte. 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 tuvo 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 generalmente se basan en StackFrame cuando lanzan excepciones .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 lento que antes.

Causa de la degradación del rendimiento System.Diagnostics.StackFrame

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

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 generan. Sin embargo, reduce significativamente la capacidad de las aplicaciones para manejar esas excepciones.

Se sabe que las aplicaciones que utilizan la biblioteca IKVM se ven afectadas por este problema si investigan ensamblados. Se sabe que el sondeo de ensamblajes causa excepciones.

Solucionar 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

Ésta es la solución preferida.

Si los desarrolladores de aplicaciones pueden realizar cambios en sus aplicaciones, llama a System.Diagnostics.StackTrace. # Ctor (booleano) constructor utilizando 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]Revertir o actualizar a la última versión de Windows 10

En este método, vuelva a la versión / compilación anterior o actualice a la última versión / compilación de Windows 10 si experimenta este problema y no está ejecutando la última versión de Windows 10. También desinstale .NET Framework 4.7 .1 si está presente, desde su computadora y luego descargar e instale una versión anterior o la última versión de .NET Framework.

¡Espero que esto ayude!

El rendimiento de SystemDiagnosticsStackFrame se degrada en Windows 10

Te puede interesar

Deja un comentario