Tipo de. El compilador .NET compila su código fuente en IL (un lenguaje intermedio) y lo empaqueta en un ensamblado (generalmente un archivo .DLL o .EXE) que usted implementa.En tiempo de ejecución, está alojado en un CLR (Common Language Runtime) que es responsable de ejecutar el código, aplicar las reglas de seguridad, etc. El escritorio principal CLR para Windows (hay otros como Mono y Silverlight) no interpreta el IL, sino más bien "JIT" s (compila justo a tiempo) el código IL en código nativo antes de ejecutar métodos (funciones).
Tenga en cuenta que en realidad hay algunas ventajas de rendimiento para just in-time compilation. Por ejemplo, CLR puede optimizar el código nativo que genera en función de las características de rendimiento de la máquina en la que se ejecuta, como tipo de CPU, tamaño de caché de CPU, número de CPU, tamaño de RAM, etc. Los compiladores tradicionales no pueden hacer esto ya que No sé en qué máquina se ejecutará finalmente el código que generan.
Además, los conjuntos pueden ser "pre-JITted" utilizando una herramienta llamada ngen. En este proceso, el código nativo se compila desde el IL antes de que el ensamblado se ejecute y se almacene en caché en el disco. De esta forma, no se incurre en gastos generales de JIT en el tiempo de ejecución.
siempre oí MSIL en contraposición a CIL. ¿Lo está llamando MSIL por fuera? –
@PhoenixRedeemer: Originalmente se conocía como MSIL, durante las versiones beta de los lenguajes .NET, pero debido a la estandarización (Ecma-335 http://is.gd/gchW) ahora se conoce oficialmente como CIL ... – CMS