En .Net existe una aplicación llamada ngen.exe que se encuentra dentro de la versión del Framework en la carpeta Windows (generalmente C:windowsMicrosoft.NetFrameworkvXXXXXX, donde las X son la versión) que precompila a código nativo un código de .Net.
Las aplicaciones desarrolladas en .Net pueden llegar a ser mas rápidas en algunos casos que las programadas en C o C++, porque a diferencia de estos lenguajes, no compila todo el código para ser ejecutado todo a la vez, sino que se realiza una compilación a un código intermedio IL que luego sera ejecutado por el JIT, y es aquí donde radica su velocidad, en que el JIT compila nativamente el código según lo vaya necesitando y se va almacenando en memoria para no tener que compilar algo 2 veces. Aparte de lo ya dicho que acelera la ejecución de una aplicación que no llame a cientos de métodos en poco tiempo (1 segundo o así). También hay que sumar a lo anterior el hecho de que JIT aplica ciertas optimizaciones sobre el código, antes de compilar este, por lo que esta realmente optimizado en comparación con C o C++.
Hay ocasiones, en que el uso de JIT reduzca mucho la velocidad de nuestra aplicación y necesitariamos hacerla en un lenguaje nativo. Por ejemplo, si tenemos una aplicación desarrollada en C# (es indiferente que sea en C#, VB o cualquier otro lenguaje de .Net) y necesite de un gran cantidad de microprocesador para procesar datos, es posible que nos interese precompilar nuestra aplicación para evitar la compilación JIT y así ahorrarnos tiempo de ejecución. Esto es posible gracias a NGen.
NGen es una aplicación que precompila a código nativo nuestra aplicación de .Net, realizando la misma función que JIT pero antes de ejecutar una aplicación, por lo que es posible que si se realiza con cabeza, nuestra aplicación se ejecute más rápidamente.
Para precompilar nuestra aplicación con NGen, abriremos la consola de DOS y añadiremos al PATH si no lo está ya la ruta donde se encuentra NGen (la ruta esta escrita más arriba). Una vez añadida la ruta, iremos donde esta nuestra aplicación y ejecutaremos el siguiente comando:
ngen install miaplicacion.exe
Con esto precompilaremos en una carpeta de cache de .Net nuestra aplicación para que se ejecute como código nativo. Existen otras opciones aparte del install que apareceran al ejecutar ngen sin ningún parámetro.