title: Compilatore AOT
text: # Compilatore AOT
  
  Un compilatore ahead-of-time (AOT) è un compilatore che implementa la compilazione ahead-of-time. Si riferisce all'atto di compilazione di un programma da un linguaggio ad alto livello (come il C o il C++) o da un linguaggio intermedio (come Java bytecode o .NET Common Intermediate Language (CIL) in un binario dipendente dal sistema.
  
  Molti linguaggi che possono essere compilati in un linguaggio intermedio prendono vantaggio della ricompilazione dinamica (JIT). In breve, il codice intermedio viene compilato nel codice binario durante l'esecuzione del programma. Questo migliora le prestazioni rispetto al codice interpretato ma le peggiora rispetto a un codice compilato fin dall'inizio in codice nativo. La compilazione JIT può rallentare le prestazioni dell'esecuzione dato che il programma prima di essere eseguito deve venir compilato dal sistema. La compilazione ahead-of-time sposta la fase compilazione prima dell'esecuzione, tipicamente durante l'installazione del programma. Quindi durante l'installazione del programma il codice in linguaggio intermedio viene compilato in codice binario nativo della piattaforma. Questo permette di eseguire il programma usando codice binario nativo evitando la fase di compilazione durante l'esecuzione del programma e in generale migliorando le prestazioni e la reattività dei programmi.
  
  