memoria. Es puede ser almacenado en caché, ese es el trabajo de ngen.exe. Genera una versión .ni.dll del ensamblado, que contiene código de máquina y se almacena en el GAC. Que automáticamente se carga después, pasando por alto el paso JIT.
Pero eso tiene poco que ver con por qué su programa comienza más rápido la 2da vez. La primera vez que tiene un llamado "arranque en frío".Que está completamente dominado por el tiempo dedicado a encontrar los archivos DLL en el disco duro. La segunda vez que tiene un inicio cálido, los archivos DLL ya están disponibles en el caché del sistema de archivos.
Los discos son lentos. Una SSD es una solución obvia.
Fwiw: este no es un problema exclusivo del código administrado. Grandes programas no administrados con muchos DLL lo tienen también. Dos ejemplos canónicos, presentes en la mayoría de las máquinas de desarrollo son Microsoft Office y Acrobat Reader. Ellos hacen trampa. Cuando se instalan, ponen un "optimizador" en la clave de registro Ejecutar o en la carpeta Inicio. Todo lo que hacen estos optimizadores es cargar todas las DLL que usa el programa principal y luego salir. Esto prepara el caché del sistema de archivos, cuando el usuario utiliza el programa posteriormente, se iniciará rápidamente ya que su inicio en caliente es rápido.
Personalmente, esto me resulta extraordinariamente molesto. Porque lo que realmente hacen es ralentizar cualquier otro programa que pueda querer iniciar después de iniciar sesión. Lo cual rara vez es Office o Acrobat. Debo eliminar estos optimizadores, repetidamente si es necesario cuando una actualización arruinada lo devuelve.
Puede usar este truco también, pero úselo de manera responsable, por favor.
Vista y Windows 7 tienen integrado este truco de caché de DLL, por lo que ya no necesita hacer "aceleradores de aplicaciones". Superfetch registra qué aplicaciones usa más y leerá esos archivos después del inicio. Es mejor que una aplicación de acelerador porque presta atención al uso actual de la memoria y al uso real de la aplicación. –
@Hans: Usted dijo '" Genera una versión .ni.dll del ensamblado, que contiene código de máquina y se almacena en el GAC "'. Tengo algunas dudas ... GAC es solo para almacenar asambleas públicas, ¿verdad? ¿Se almacena una 'imagen nativa' de un' exe' que estoy ejecutando? – Sreekumar
Sí, eso es lo que dice la respuesta. Está oculto a la vista, pero puede verlo iniciando el símbolo del sistema. Escriba 'dir c: \ windows \ assembly' para listar los directorios en el GAC. –