Si después de actualizar a Windows 10 o .NET Framework 4.7.1, y nota una disminución significativa en el rendimiento cuando ejecuta .NET Framework que utilizan Sistema.Diagnósticos.StackFrame clase, entonces esta publicación puede interesarte. Analizaremos la causa y luego ofreceremos soluciones conocidas para el error.
Sistema.Diagnósticos.Degradación del rendimiento de StackFrame
Una aplicación que tenía un rendimiento aceptable ejecutándose en el .NET Framework 4.7 o versiones anteriores se ejecuta más lentamente cuando se ejecuta en el .NET Framework 4.7.1. Las aplicaciones suelen depender de StackFrame cuando lanzan .Excepciones .NET. Si esto ocurre a un ritmo alto (más de 10 incidentes por segundo), las aplicaciones pueden ralentizarse significativamente (diez veces) y ejecutarse notablemente más lento que antes.
Causa del sistema.Diagnósticos.Degradación del rendimiento de StackFrame
La .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 dedica mucho más tiempo a buscar PDB portátiles que antes .Las versiones de .NET Framework dedicadas a la búsqueda de PDB de Windows clásicos.
Esto hace que los seguimientos de pila formateados se produzcan más lentamente que antes.
Este problema no cambia la cantidad 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 investigan ensamblados. Se sabe que el sondeo de ensamblajes causa excepciones.
Sistema de reparación.Diagnósticos.Problema de degradación del rendimiento de 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
Esta es la solución preferida.
Si los desarrolladores de aplicaciones pueden realizar cambios en sus aplicaciones, llame al sistema.Diagnósticos.StackTrace.#ctor (booleano) constructor mediante el uso de 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, retroceda a la versión / compilación anterior o actualice a la última versión / compilación de Windows 10 si tiene este problema y actualmente no está ejecutando la última versión de Windows 10. También desinstalar .NET Framework 4.7.1 si está presente, desde su computadora y luego descargue e instale una versión anterior o la última versión de .NET Framework.
Espero que esto ayude!