Prós e contras de JIT e AOT [fechado]

5

Em que aspectos a compilação "Just In Time" é melhor que a compilação "Ahead Of Time"? E vice-versa.

A AOT é igual à compilação nativa direta?

    
por Gulshan 07.04.2011 / 06:43
fonte

1 resposta

7

A compilação just-in-time geralmente usa informações de criação de perfil (como "quantas vezes esse método foi executado até agora") para determinar com que intensidade um determinado método deve ser compilado e é geralmente incluído na plataforma de execução. O JIT foi colocado em foco com as primeiras versões do Java, já que eles só podiam fazer interpretações simples, mas com ganchos permitindo que módulos JIT externos fossem plugados, permitindo melhorias vastas da velocidade de execução.

A compilação Ahead of time é - ao meu conhecimento - um termo cunhado para complementar o conceito JIT e geralmente reflete uma etapa de compilação feita antes da execução que raramente inclui informações de criação de perfil (então todos os métodos são compilados igualmente). A etapa de otimização é concluída no tempo de execução, portanto, não precisa estar presente no tempo de execução. Isso significa que o ambiente de execução não precisa ser tão grande quanto no ambiente JIT.

Uma das grandes vantagens da compilação JIT é que ela permite direcionar diretamente o hardware exato em cada execução, utilizando coisas como SSE3 ou AltiVec, em vez de precisar compilar para um subconjunto comum disponível em todas as plataformas.

Note, no entanto, que o processo JIT é geralmente difícil de prever o que ele fará. Você geralmente não consegue descobrir como "enganá-lo" para fazer algo especial com o código "gnarly", já que ele pode mudar na próxima versão. Isso significa que é muito importante escrever código simples e limpo, dando ao JIT as melhores condições possíveis para fazer seu trabalho.

    
por 07.04.2011 / 08:16
fonte

Tags