Este artículo necesita citas adicionales para su verificación . ( enero de 2023 ) |
Ejecución del programa |
---|
Conceptos generales |
Tipos de código |
Estrategias de compilación |
Tiempos de ejecución notables |
|
Compiladores y cadenas de herramientas notables |
En informática , el tiempo de compilación (o tiempo de compilación ) describe la ventana de tiempo durante la cual las instrucciones de un lenguaje se convierten en instrucciones binarias para que el procesador las ejecute. [1] El término se utiliza como adjetivo para describir conceptos relacionados con el contexto de la compilación del programa, a diferencia de los conceptos relacionados con el contexto de la ejecución del programa ( tiempo de ejecución ). Por ejemplo, los requisitos de tiempo de compilación son requisitos del lenguaje de programación que debe cumplir el código fuente antes de la compilación y las propiedades de tiempo de compilación son propiedades del programa sobre las que se puede razonar durante la compilación. El tiempo real que lleva compilar un programa generalmente se conoce como tiempo de compilación .
La determinación del modelo de ejecución se ha establecido durante la etapa de compilación. El tiempo de ejecución (el método de ejecución y asignación) se ha establecido durante el tiempo de ejecución y se basa en la dinámica del tiempo de ejecución.
La mayoría de los compiladores tienen al menos las siguientes fases de compilación (que, por lo tanto, ocurren en tiempo de compilación): análisis de sintaxis , análisis semántico y generación de código . Durante las fases de optimización, las expresiones constantes en el código fuente también se pueden evaluar en tiempo de compilación mediante la ejecución en tiempo de compilación , que reduce las expresiones constantes a un solo valor. Esto no es necesario para la corrección, pero mejora el rendimiento del programa durante el tiempo de ejecución.
Las definiciones de lenguajes de programación suelen especificar los requisitos de tiempo de compilación que debe cumplir el código fuente para compilarse correctamente. Por ejemplo, los lenguajes pueden estipular que se puede deducir la cantidad de almacenamiento que requieren los tipos y las variables.
Las propiedades de un programa sobre las que se puede razonar en tiempo de compilación incluyen comprobaciones de rango (por ejemplo, probar que un índice de matriz no excederá los límites de la matriz), libertad de bloqueo en lenguajes concurrentes o tiempos (por ejemplo, probar que una secuencia de código no toma más que una cantidad de tiempo asignada).
El tiempo de compilación ocurre antes del tiempo de enlace (cuando se unen las salidas de uno o más archivos compilados) y del tiempo de ejecución (cuando se ejecuta un programa ). Aunque en el caso de la compilación dinámica , las transformaciones finales en lenguaje de máquina ocurren en el tiempo de ejecución.
Existe una compensación entre el tiempo de compilación y el tiempo de enlace, ya que muchas operaciones de tiempo de compilación se pueden posponer al tiempo de enlace sin incurrir en costos de tiempo de ejecución.