33 votos

Lo que hace un compilador JIT?

Justo estaba viendo el google IO videos y hablaron sobre el compilador JIT de ellos incluido en el android y mostró una demostración acerca de las mejoras de rendimiento gracias al compilador JIT. Me preguntaba ¿qué hace exactamente un compilador JIT de hacer y quería escuchar a diferentes personas.

Así que, ¿Cuál es el deber de un compilador JIT?

Gracias a todos

Gracias a todos Las Frases que yo estaba buscando:

Mejora la velocidad mediante la optimización del código generado para el medio ambiente en que se ejecuta en la CPU (instrucciones específicas, tamaño de la caché,...).

pero con el almacenamiento en caché de código traducido para minimizar la degradación del rendimiento

Un compilador JIT, se compila el código, que es a menudo en un lenguaje intermedio como bytecode de Java o Microsoft IL, en natal, el código ejecutable, y lo hace en el momento en que el código se llama.

32voto

PauliL Puntos 830

El código Java está normalmente distribuido como código de bytes, que es independiente de la máquina pseudocódigo. (La misma idea que fue utilizado previamente en la UCSD p-system desarrollado en los 70's.) La ventaja de esto es que la misma aplicación se puede ejecutar en diferentes sistemas operativos y procesadores. Además, el bytecode es normalmente más pequeñas que la aplicación compilada.

La desventaja es que la interpretación de que el código es lento en comparación a la ejecución de código compilado. Para resolver este problema, el compilador JIT se ha desarrollado. Compilador JIT se compila el código en código de máquina justo antes de que se ejecute el código. Esto acelera la ejecución en comparación con el intérprete, pero el tiempo adicional que se gasta para compilar cada vez que se ejecute el programa. Además, dado que el compilador JIT debe compilar rápido, no se puede utilizar el complejo de técnicas de optimización que se utilizan en la estática de los compiladores.

Otro enfoque es el HotSpot de la compilación. Inicialmente se ejecuta como intérprete, pero, a continuación, detecta que las rutinas se utilizan con más frecuencia y que recoge sólo los. La ventaja es que no hay ningún retraso inicial debido a la compilación. Además, HotSpot compilador puede hacer perfiles durante la ejecución y, a continuación, emitir más fuerte de optimización para la mayoría de las rutinas importantes. Incluso puede recopilar información para que al ejecutar la misma aplicación una y otra vez, se ejecutará más rápido y más rápido. Más información acerca de HotSpot compilación puede ser encontrado a partir de este artículo (tnx Pangea para el enlace).

Por supuesto, en lugar de utilizar el compilador JIT, sólo podría utilizar estático de un compilador para compilar el código de bytes para su máquina. Esto permite la optimización completa y, a continuación, usted no necesita compilar de nuevo cada vez que se ejecuta la aplicación. Sin embargo, en los teléfonos y páginas web, que a menudo se acaba de ejecutar el código (o subprograma) una vez, así que el compilador JIT puede ser una mejor opción.

13voto

David M Puntos 45808

JIT es la abreviatura de "justo a tiempo". Un compilador JIT, se compila el código, que es a menudo en un lenguaje intermedio como bytecode de Java o Microsoft IL, en natal, el código ejecutable, y lo hace en el momento en que el código se llama. Así hasta que el código se llama, que sólo existe en el portátil, no la máquina específicos de código de bytes o IL, y luego cuando se la llama, el código nativo se genera (el cual es re-utilizado en las llamadas posteriores).

7voto

Skilldrick Puntos 33002

Es un just-in-time compiler, a medio camino entre un intérprete y un compilador (es decir, compila, pero sólo antes de que se ejecute el código).

Esto permite optimizaciones para la compilación utilizando dinámica de la información sólo se conoce en tiempo de ejecución (como los compiladores que generalmente se ejecuta de forma estática, por lo que sólo tienen acceso a tiempo de compilación de la información). Es mucho más difícil escribir, pero pueden dar grandes mejoras de rendimiento.

Para obtener más información, como siempre, ver Wikipedia:

En la informática, en tiempo de compilación (JIT), también conocido como la traducción dinámica, es una técnica para mejorar el rendimiento en tiempo de ejecución de un programa de ordenador. Tradicionalmente, los programas de ordenador había dos modos de operación en tiempo de ejecución, ya sea interpretada o estática (antes de tiempo) de la compilación. Código interpretado fue traducido a partir de un lenguaje de alto nivel a código máquina de forma continua durante cada ejecución, mientras que la estática de compilación de código traducido a código máquina antes de la ejecución, y sólo se requiere de esta traducción una vez.

Los compiladores JIT representado un enfoque híbrido, con la traducción que ocurren en forma continua, con los intérpretes, pero con el almacenamiento en caché de código traducido para minimizar la degradación del rendimiento. También ofrece otras ventajas sobre el código compilado estáticamente en el tiempo de desarrollo, tales como el manejo de enlazado en tiempo de ejecución tipos de datos y la capacidad para hacer cumplir las garantías de seguridad.

3voto

Paolo Puntos 11860

JIT = Justo a Tiempo. Es un proceso mediante el cual un programa que pudiera ser interpretado (por ejemplo, Java bytecode o código Javascript), se convierte a código máquina nativo sobre la marcha a medida que se ejecuta para mejorar el rendimiento.

Algunos de los beneficios son el compilador JIT se puede ver los puntos de acceso y aplicar más agresivo optimizaciones, también puede tomar ventaja de las extensiones de la actual procesador tiene como SSE2.

Esta pregunta puede tener más info: http://stackoverflow.com/questions/2828623/how-a-jit-compiler-helps-performance-of-applications

2voto

Filip Ekberg Puntos 22189

Así que, ¿Cuál es el deber de un JIT compilador?

Como han mencionado otros es la abreviatura de "Justo a Tiempo", que en este sentido significa "Justo a tiempo para su ejecución".

Al compilar programas en código máquina, que a menudo están dirigidas a una determinada plataforma.

Por lo tanto JIT fue "Inventado", que quiere compilar los últimos fragmentos de su código para la ejecución de la plataforma, así que veo esto como un "antes exection"-compilador/optimizador.

JIT hace nuestra vida más fácil y hace que (esperemos) de nuestras aplicaciones se ejecuten más rápido.

Por supuesto, hay otros a los efectos de JIT-compilación, lo anterior es sólo uno de ellos.

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: