Saltar al contenido

¿Qué hace un compilador justo a tiempo (JIT)?

Si te encuentras con algún detalle que no entiendes puedes comentarlo y te ayudaremos lo mas rápido que podamos.

Solución:

Se ejecuta un compilador JIT después el programa se ha iniciado y compila el código (generalmente código de bytes o algún tipo de instrucciones de VM) sobre la marcha (o justo a tiempo, como se le llama) en una forma que suele ser más rápida, generalmente el conjunto de instrucciones nativas de la CPU host. Un JIT tiene acceso a información de tiempo de ejecución dinámica, mientras que un compilador estándar no lo tiene y puede realizar mejores optimizaciones, como funciones de inserción que se usan con frecuencia.

Esto contrasta con un compilador tradicional que compila todos el código a lenguaje máquina antes de el programa se ejecuta por primera vez.

Parafraseando, los compiladores convencionales compilan todo el programa como un archivo EXE ANTES de ejecutarlo por primera vez. Para los programas de estilo más nuevos, se genera un ensamblado con pseudocódigo (código p). Solo DESPUÉS de ejecutar el programa en el sistema operativo (p. ej., haciendo doble clic en su icono) el compilador (JIT) se activará y generará código de máquina (código m) que el procesador basado en Intel o lo que sea pueda entender.

Al principio, un compilador era responsable de convertir un lenguaje de alto nivel (definido como un nivel superior al ensamblador) en código objeto (instrucciones de máquina), que luego se vincularía (mediante un enlazador) en un ejecutable.

En un punto de la evolución de los lenguajes, los compiladores compilarían un lenguaje de alto nivel en pseudocódigo, que luego sería interpretado (por un intérprete) para ejecutar su programa. Esto eliminó el código objeto y los ejecutables, y permitió que estos lenguajes fueran portátiles a múltiples sistemas operativos y plataformas de hardware. Pascal (que compiló a P-Code) fue uno de los primeros; Java y C# son ejemplos más recientes. Eventualmente, el término P-Code fue reemplazado por bytecode, ya que la mayoría de las pseudooperaciones tienen un byte de longitud.

Un compilador Just-In-Time (JIT) es una característica del intérprete en tiempo de ejecución, que en lugar de interpretar el código de bytes cada vez que se invoca un método, compilará el código de bytes en las instrucciones del código de máquina de la máquina en ejecución y luego invocará este código objeto en su lugar. Idealmente, la eficiencia de ejecutar el código objeto superará la ineficiencia de volver a compilar el programa cada vez que se ejecuta.

JIT-Justo a tiempo la propia palabra dice cuando se necesita (bajo demanda)

Escenario típico:

El código fuente se convierte completamente en código de máquina.

Escenario JAT:

El código fuente se convertirá en lenguaje ensamblador como estructura [for ex IL (intermediate language) for C#, ByteCode for java].

El código intermedio se convierte a lenguaje de máquina solo cuando la aplicación necesita que los códigos requeridos solo se conviertan a código de máquina.

Comparación JIT vs No JIT:

  • En JIT, no todo el código se convierte en código de máquina, primero una parte del código que es necesario se convertirá en código de máquina, luego, si un método o funcionalidad llamado no está en la máquina, se convertirá en código de máquina … reduce carga sobre la CPU.

  • Como el código de máquina se generará en tiempo de ejecución… el compilador JIT producirá código de máquina que está optimizado para ejecutar la arquitectura de CPU de la máquina.

Ejemplos JAT:

  1. En Java JIT está en JVM (Java Virtual Machine)
  2. En C# está en CLR (Common Language Runtime)
  3. En Android está en DVM (Dalvik Virtual Machine) o ART (Android RunTime) en versiones más recientes.

valoraciones y comentarios

Nos puedes añadir valor a nuestra información asistiendo con tu experiencia en las reseñas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *