fbpx
Wikipedia

Compilación anticipada

En informática, Compilación anticipada (AOT por sus siglas en inglés, ahead-of-time) es el acto de compilar un lenguaje de programación de alto nivel como C o C++, o un lenguaje intermedio como Java bytecode o el Common Intermediate Language (CIL) de .NET, a un código de máquina nativo (dependiente del sistema) con la intención de ejecutar el archivo binario resultante nativamente.

AOT produce código máquina optimizado, igual que un compilador nativo "estándar". La diferencia es que AOT transforma el bytecode de una máquina virtual (VM) a código máquina.

Reducción de la sobrecarga en tiempo de ejecución editar

Algunos lenguajes de programación con código gestionado que pueden ser compilados a un lenguaje intermedio hacen uso del justo-en-tiempo (JIT). Esto, en resumen, compila código intermedio a código máquina para una ejecución nativa mientras el código intermedio se está ejecutando, lo cual puede hacer disminuir el rendimiento de una aplicación. La compilación anticipada elimina la necesidad de este paso al ejecutar la compilación antes de la ejecución en vez de hacerlo durante la ejecución.

La compilación anticipada de lenguajes dinámicamente tipados a código de máquina nativa u otros bytecodes de máquina virtual es posible sólo en un número limitado de casos. Por ejemplo, el compilador AOT del HiPE para Erlang puede hacerlo gracias a avanzadas técnicas de reconstrucción de tipos estáticos y especulación de tipos.[cita requerida]

En la mayoría de los casos, el uso de programas y librerías compilados con AOT proporciona una reducción considerable del entorno de ejecución, ahorrando así espacio de disco, memoria, batería y tiempo de arranque (eliminación de la fase de JIT), etc. Gracias a este motivo, pueden ser muy útil en dispositivos móviles o embebidos.

Compensaciones en la ejecución editar

Los compiladores AOT consiguen complejas y avanzadas optimizaciones de código qué en la mayoría de los casos serían demasiado costosas de hacer con JIT. Por otro lado, AOT normalmente no puede ejecutar algunas optimizaciones posibles en JIT, como , optimizaciones guiadas por perfil, propagación pseudo-constante o funciones indirectas/virtuales en línea.

Además, los compiladores JIT pueden optimizar especulativamente código "caliente" haciendo especulaciones con el código. El código generado puede ser empeorado si una suposición especulativa resulta ser errónea más adelante. Estas operaciones hacen daño al rendimiento del software ejecutado hasta que el código es optimizado de nuevo por optimización adatativa. Un compilador AOT no puede hacer tales suposiciones y necesita recopilar tanta información como sea posible en tiempo de compilación. No puede usar tanto código especializado porque podría no saber realmente que tipos se usarían en un determinado método. Tales problemas pueden ser aliviados usando optimizaciones guiadas por perfil. Pero incluso así, el código generado no puede adaptarse a un nuevo perfil de ejecución como un compilador JIT haría.

Véase también editar

Enlaces externos editar

  • Velocidad: NGen Revs Arriba de Vuestro Rendimiento con Características Nuevas Potentes -- MSDN Revista, abril de 2005
  • Mono AOT
  • AOT Recopilación de asm.js
  • Real-tiempo Java, Parte 2: Comparando técnicas de recopilación -- IBM developerWorks, abril de 2007
  • Mejorando Rendimiento de Cambio: JIT vs AOT Recopilación -- LinuxWorld Revista, noviembre de 2004
  •   Datos: Q56248162

compilación, anticipada, informática, siglas, inglés, ahead, time, acto, compilar, lenguaje, programación, alto, nivel, como, lenguaje, intermedio, como, java, bytecode, common, intermediate, language, código, máquina, nativo, dependiente, sistema, intención, . En informatica Compilacion anticipada AOT por sus siglas en ingles ahead of time es el acto de compilar un lenguaje de programacion de alto nivel como C o C o un lenguaje intermedio como Java bytecode o el Common Intermediate Language CIL de NET a un codigo de maquina nativo dependiente del sistema con la intencion de ejecutar el archivo binario resultante nativamente AOT produce codigo maquina optimizado igual que un compilador nativo estandar La diferencia es que AOT transforma el bytecode de una maquina virtual VM a codigo maquina Indice 1 Reduccion de la sobrecarga en tiempo de ejecucion 2 Compensaciones en la ejecucion 3 Vease tambien 4 Enlaces externosReduccion de la sobrecarga en tiempo de ejecucion editarAlgunos lenguajes de programacion con codigo gestionado que pueden ser compilados a un lenguaje intermedio hacen uso del justo en tiempo JIT Esto en resumen compila codigo intermedio a codigo maquina para una ejecucion nativa mientras el codigo intermedio se esta ejecutando lo cual puede hacer disminuir el rendimiento de una aplicacion La compilacion anticipada elimina la necesidad de este paso al ejecutar la compilacion antes de la ejecucion en vez de hacerlo durante la ejecucion La compilacion anticipada de lenguajes dinamicamente tipados a codigo de maquina nativa u otros bytecodes de maquina virtual es posible solo en un numero limitado de casos Por ejemplo el compilador AOT del HiPE para Erlang puede hacerlo gracias a avanzadas tecnicas de reconstruccion de tipos estaticos y especulacion de tipos cita requerida En la mayoria de los casos el uso de programas y librerias compilados con AOT proporciona una reduccion considerable del entorno de ejecucion ahorrando asi espacio de disco memoria bateria y tiempo de arranque eliminacion de la fase de JIT etc Gracias a este motivo pueden ser muy util en dispositivos moviles o embebidos Compensaciones en la ejecucion editarLos compiladores AOT consiguen complejas y avanzadas optimizaciones de codigo que en la mayoria de los casos serian demasiado costosas de hacer con JIT Por otro lado AOT normalmente no puede ejecutar algunas optimizaciones posibles en JIT como optimizaciones guiadas por perfil propagacion pseudo constante o funciones indirectas virtuales en linea Ademas los compiladores JIT pueden optimizar especulativamente codigo caliente haciendo especulaciones con el codigo El codigo generado puede ser empeorado si una suposicion especulativa resulta ser erronea mas adelante Estas operaciones hacen dano al rendimiento del software ejecutado hasta que el codigo es optimizado de nuevo por optimizacion adatativa Un compilador AOT no puede hacer tales suposiciones y necesita recopilar tanta informacion como sea posible en tiempo de compilacion No puede usar tanto codigo especializado porque podria no saber realmente que tipos se usarian en un determinado metodo Tales problemas pueden ser aliviados usando optimizaciones guiadas por perfil Pero incluso asi el codigo generado no puede adaptarse a un nuevo perfil de ejecucion como un compilador JIT haria Vease tambien editarAndroid Runtime GNU Compiler for Java RubyMotion Ruby Enlaces externos editarVelocidad NGen Revs Arriba de Vuestro Rendimiento con Caracteristicas Nuevas Potentes MSDN Revista abril de 2005 Mono AOT Excelsior JET Certificado Java SE Implementacion con AOT compilador GNU Compilador para Java AOT Recopilacion de asm js Real tiempo Java Parte 2 Comparando tecnicas de recopilacion IBM developerWorks abril de 2007 Mejorando Rendimiento de Cambio JIT vs AOT Recopilacion LinuxWorld Revista noviembre de 2004 manta nbsp Datos Q56248162 Obtenido de https es wikipedia org w index php title Compilacion anticipada amp oldid 137350914, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos