218 votos

¿Qué hace un (JIT) compilador just-in-time?

¿Qué hace un compilador JIT hacer específicamente en lugar de un compilador JIT no? ¿Puede alguien dar una descripción concisa y fácil de entender?

221voto

Mark Cidade Puntos 53945

Un compilador JIT se ejecuta después de que el programa se ha iniciado y compila el código (por lo general bytecode o algún tipo de VM instrucciones sobre la marcha (o just-in-time, como se llama) en una forma que suele ser más rápido, generalmente, la CPU del host nativo del conjunto de instrucciones. Un JIT tiene acceso a una dinámica en tiempo de ejecución la información, mientras que un compilador estándar que no, y puede hacer mejores optimizaciones como funciones inline que se utilizan con frecuencia.

Esto está en contraste con los tradicionales de un compilador que compila todo el código a lenguaje máquina antes de que el programa se ejecute por primera vez.

Parafraseando convencionales, los compiladores de construir todo el programa como un archivo EXE ANTES de la primera vez que se ejecuta. De estilo más recientes de los programas, una asamblea que se genera con pseudocódigo (p-code). Sólo DESPUÉS de ejecutar el programa en el sistema operativo (por ej., haciendo doble clic en su icono) de la (JIT) compilador de iniciar y generar código máquina (código-m) que basados en Intel con procesador o lo que sea que se entienda.

137voto

Craig Trader Puntos 8924

En el comienzo, un compilador se encarga de convertir un lenguaje de alto nivel (definido como mayor nivel de ensamblador) en código objeto (las instrucciones de la máquina), que estaría vinculado (por un linker) en un archivo ejecutable.

En un momento de la evolución de los lenguajes, compiladores compile un lenguaje de alto nivel en pseudo-código, que luego sería interpretado (por un intérprete) para ejecutar el programa. Esto elimina el código objeto y ejecutables, y permitió que estos idiomas para ser portátil para varios sistemas operativos y plataformas de hardware. Pascal (que se compila a Código P) fue uno de los primeros, Java y C# son los ejemplos más recientes. Finalmente, el término P-Código fue reemplazado con el código de bytes, ya que la mayoría de los pseudo-operaciones de un byte de longitud.

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

24voto

HDA Puntos 2590

JIT-Justo a tiempo lo dice la misma palabra cuando es necesario(en la demanda)

Caso típico:

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

JIT escenario:

El código fuente se convertirá en la asamblea de la lengua como estructura [ex IL(intermediate language) para C#,código de bytes de java].

El código intermedio se convierte en lenguaje de máquina sólo cuando las necesidades de la aplicación que se requiere de los códigos se convierte a código máquina.

JIT vs No-JIT comparación:

  • En JIT no todo el código se convierte en código máquina primera parte el código que es necesario se convierte en código máquina entonces, si un método o funcionalidad de llamada no está en la máquina, a continuación, que va a ser convertido a código de máquina... se reduce la carga en la cpu.

  • Como el código máquina va a ser generado en tiempo de ejecución....el JIT compilador generará un código máquina que está optimizado para el funcionamiento de la máquina de la arquitectura de la cpu.

JIT Ejemplos:

  1. En Java JIT es la JVM(java virtual machine)
  2. En C# es en dot net framework
  3. En Android DVM(Dalvik virtual machine)

8voto

Brian Lyttle Puntos 9344

JIT significa Just-in-Time, que significa que el código se compila cuando es necesario, no antes de la ejecución.

Esto es beneficioso ya que el compilador puede generar código optimizado para su máquina en particular. Estático de un compilador, como el promedio de su compilador de C, compilar todo el código a código ejecutable en el equipo del desarrollador. De ahí que el compilador realice optimizaciones basadas en algunos de los supuestos. Se puede compilar más lentamente y hacer más optimizaciones porque no es el retraso de la ejecución del programa para el usuario.

5voto

user1589737 Puntos 31

Después de que el código de bytes(que es la arquitectura neutral) ha sido generada por el compilador de java, la ejecución será manejado por la JVM(java). código de bytes será cargado en la JVM por cargador y, a continuación, cada byte de la instrucción se interpreta. Cuando tenemos que llamar a método varias veces necesitamos interpretar el mismo código muchas veces, y esto puede tomar tiempo. Así que hemos JIT(just-in-time) compiladores. Cuando el byte ha sido cargado en la JVM( es el tiempo de ejecución), todo el código se compila en lugar de la interpretación. Esto ahorra tiempo. Compiladores JIT sale sólo durante el tiempo de ejecución. así que no podemos tener ninguna salida binaria.

Why dont we have any binary output?? because, Jit works only during run time.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X