Pregunta

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

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

  

Y, por supuesto, Microsoft está trabajando muy duro para mejorar el CLR   y su compilador JIT para que se ejecute más rápido, produce más optimizado   código, y utiliza la memoria de manera más eficiente. Estas mejoras se llevarán a   hora. Para los desarrolladores que no pueden esperar, .NET Framework   redistributable incluye una utilidad llamada Ngen.exe.

¿Fue útil?

Solución

NGen sólo ayudará tiempo de inicio - que no tiene el código de ejecución más rápido de lo que sería después JITting. De hecho, creo que hay algunas optimizaciones, que NGen no hacer, pero el JIT hace.

Por lo tanto, la cuestión principal es: ¿tiene un problema con el tiempo de inicio? No sé la cantidad de tiempo de puesta en marcha de una aplicación ASP.NET será JITting vs otros costes, por cierto ... probablemente debería mirar los gráficos Performance Manager para el JIT que le diga la cantidad de tiempo que realmente le cuesta .

(En términos de disponibilidad, que tiene varios servidores para que pueda hacer reinicia rodantes se va a dar mucho más beneficios que un solo servidor con una aplicación web NGENed.)

Otros consejos

no la creación de los archivos .dll en la carpeta bin es el paso final - -

NGen no es el camino a seguir para ASP.NET se compilan de nuevo con la configuración web / maching.config aplicados en su C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files carpeta. En lugar de NGen, para disminuir el tiempo de carga inicial, utilice la herramienta de publicación Sitio Web o aspnet_compiler.exe

No estoy seguro de que el principal beneficio de NGEN es la puesta en marcha de tiempo a solas - si el sufrimiento de la aplicación de un alto ' Tiempo% en JIT ', esto aparece como un remedio potencial: http://msdn.microsoft.com/en-us /library/dd264972(VS.100).aspx .

La discusión está estrechamente relacionada con una pregunta diferente sobre cómo código máquina JIT'd se almacena en caché y volver a utilizar?

Yo estaba buscando en esta noche y me encontré con lo siguiente:

El tiempo de ejecución de lenguaje común no puede cargar las imágenes que se crean con NGEN en el dominio de la aplicación compartida. Debido a que ASP.NET montajes estándar son compartidos y luego se cargan en un dominio de aplicación compartida, no se puede utilizar Ngen.exe para instalarlos en la memoria caché de imágenes nativas en el equipo local. http://support.microsoft.com/kb/331979

No estoy seguro si esto sólo se refiere a ensamblados de referencia de ASP.net aplicación o la aplicación en sí?

Si lo hace, el vídeo de YouTube demuestra que en realidad vídeo de la optimización del rendimiento Ngen.exe

Pero la palabra de verificación de precaución, comprobar y luego ponerlo en práctica.

NGen ayuda a tiempo de inicio. Por ejemplo, el documentación de Entity Framework dice esto acerca de los beneficios de correr NGen:

  

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

El contexto es sólo las asambleas de Entity Framework. NGenning otros conjuntos proporcionaría aceleración adicional.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top