tag route page net asp asp.net jit ngen

asp.net - route - ¿Ayuda usar NGEN?



asp route tag helper (6)

NGen solo ayudará al tiempo de inicio; no hace que el código se ejecute más rápido de lo que lo haría después de JITting. De hecho, creo que hay algunas optimizaciones que NGen no hace, pero el JIT sí lo hace.

Entonces, la pregunta principal es: ¿tienes un problema con el tiempo de inicio? No sé qué parte del tiempo de inicio de una aplicación ASP.NET será JITting frente a otros costos, por cierto ... probablemente debería mirar los gráficos de Performance Manager para el JIT para decirle cuánto tiempo le está costando realmente .

(En términos de disponibilidad, tener varios servidores para que pueda hacer reinicios rotativos le dará mucho más beneficio que un solo servidor con una aplicación web NGENed).

¿Es mejor utilizar NGEN una aplicación ASP.NET cuando sabemos que no va a cambiar mucho? ¿O es el JIT lo suficientemente bueno?

La única razón por la que pregunté fue porque este artículo de Jeffrey Richter en 2002 dice:

Y, por supuesto, Microsoft está trabajando bastante duro para mejorar el CLR y su compilador JIT para que funcione más rápido, produzca un código más optimizado y use la memoria de manera más eficiente. Estas mejoras tomarán tiempo. Para los desarrolladores que no pueden esperar, .NET Framework redistributable incluye una utilidad llamada NGen.exe.


Estuve investigando esto esta noche y encontré lo siguiente:

El tiempo de ejecución de idioma común no puede cargar imágenes creadas con NGEN en el dominio de aplicación compartido. Debido a que los ensamblados estándar de ASP.NET se comparten y luego se cargan en un dominio de aplicación compartido, no puede usar Ngen.exe para instalarlos en la memoria caché de imágenes nativas en la computadora local. http://support.microsoft.com/kb/331979

¿No estoy seguro de si esto solo se refiere a los ensamblados a los que se hace referencia desde la aplicación ASP.net o la propia aplicación?


NGen no es el camino a seguir para ASP.NET - la creación de .dlls en la carpeta bin no es el último paso - se vuelven a compilar con la configuración web / maching.config aplicada en su C:/Windows/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files . En lugar de NGen, para disminuir el tiempo de carga inicial, utilice la herramienta Publicar sitio web o aspnet_compiler.exe



NGen ayuda al tiempo de inicio. Por ejemplo, la documentación de Entity Framework dice esto sobre el beneficio de ejecutar NGen:

Las observaciones empíricas muestran que las imágenes nativas de los ensamblajes de tiempo de ejecución de EF pueden reducir entre 1 y 3 segundos del tiempo de inicio de la aplicación.

El contexto es solo los ensamblados de Entity Framework. NGenning otras asambleas proporcionaría velocidad adicional.