.net - vasar - ¿Cómo evito que NGEN vuelva a basar mi código(afectando negativamente el rendimiento)?
mantener scroll postback asp net (3)
Simplemente quiero acelerar mi aplicación cliente .NET-base y estoy considerando NGEN-ing el código.
Jeffery Richter escribió esta advertencia sobre el código ngening:
• Rendimiento de tiempo de carga inferior (Rebasing). Cuando Windows carga un archivo NGend, comprueba si el archivo se carga en su dirección base preferida. Si el archivo no puede cargarse en su dirección base preferida, Windows reubica el archivo, reparando todas las referencias de direcciones de memoria. Esto consume mucho tiempo porque Windows debe cargar todo el archivo en la memoria y modificar varios bytes dentro del archivo. Para obtener más información sobre el rebasado, consulte mi libro: Programación de aplicaciones para Microsoft Windows, 4ª Edición (Microsoft Press).
Como no sé mucho sobre este tema, ¿qué debería saber antes de comenzar a cambiar la configuración dentro de mi proyecto y qué configuración debo cambiar?
De acuerdo con este blog de Microsoft , "puede haber algunos casos marginales donde el establecimiento de direcciones base en sistemas operativos Vista + tiene un beneficio, pero estos pueden ignorarse en gran medida". Por lo tanto, aunque el uso de ngen mejora los tiempos de inicio, ya no es necesario establecer las direcciones base a menos que admita los sistemas operativos anteriores a la Vista. Este es un efecto secundario de la nueva característica de seguridad de Aleatorio de diseño de espacio de direcciones.
La reubicación de sus archivos DLL solo ocurre en el momento de la carga, una vez cargados, no hay más visitas de rendimiento debido al proceso de reubicación. Por supuesto, dependiendo del número y el tamaño de los archivos DLL (el número de reubicaciones), el tiempo de carga puede verse significativamente afectado, que es un problema si su aplicación se inicia y detiene con frecuencia.
Reubicar archivos DLL para mejorar los tiempos de carga requiere monitoreo y ajuste continuos, si no ha dejado espacio suficiente entre las ubicaciones de carga DLL, terminará con colisiones a medida que las DLL crecen o se agregan nuevas DLL al proyecto.
Aquí hay una discusión de un artículo de MSDN sobre cómo mejorar el tiempo de inicio de la aplicación. http://msdn.microsoft.com/en-us/magazine/cc163655.aspx
NGEN le permite especificar una dirección base (también expuesta en configuraciones VS). Si va a NGEN, básicamente quiere asegurarse de que no haya superposición entre las DLL. Si tiene superposición, entonces el CLR se verá obligado a volver a establecer una base cuando se carguen.