Não entendi como o JIT funciona, tentei ver o vídeo mais de 2 vezes e atéler o texto escrito e ainda não entendi. Alguém poderia me ajudar?
Não entendi como o JIT funciona, tentei ver o vídeo mais de 2 vezes e atéler o texto escrito e ainda não entendi. Alguém poderia me ajudar?
Olá, tudo bem com você?
Tradicionalmente, existiam duas maneiras de se executar um código em nossas máquinas, a partir do processo de compilação ou de interpretação. Ambas as formas trazem suas vantagens e desvantagens, como principais podemos citar:
O processo de compilação, por transformar todo o código fonte em código de máquina, tem sua execução muito mais rápida, pois o computador já conhece todas as suas funções. No entanto, esse processo apesar de muito eficaz, pode ter problemas de otimização; imagine um código fonte gigante, com mais de mil linhas e que contenha diversas funções diferentes. Caso todas elas sejam utilizadas, teremos uma vantagem gigantesca da compilação do código, pois o computador já vai saber quais funções executar. No entanto, caso existam funções dentro do código fonte que não sejam utilizadas durante a execução do programa, o compilador ainda assim vai fazer a compilação destas, de maneira desnecessária, uma vez que elas são inutilizadas durante a execução do programa e esse processo de compilação acaba sendo custoso para a máquina desnecessariamente.
O processo de compilação, apesar de ser mais lento por não ter predefinido todas as funções que serão utilizadas, mas sim executar linha a linha do código fonte, traz uma vantagem quando há funções inutilizadas no programa, pois este só vai ignorá-las e executar apenas as funções que são realmente utilizadas e necessárias na execução do programa.
O processo de compilação JIT, une as vantagens dos dois métodos: Ele interpreta e compila o código conforme necessário. Como assim?
O compilador JIT interpreta o código e executa linha a linha, mas quando é necessário ele compila o código. Imagine uma função que é utilizada em diversos lugares dentro do programa; neste caso o compilador é inteligente o suficiente para perceber a recorrência de utilização e vai compilar essa função, para que todas as vezes que ela for utilizada o computador já conhecer ela e não ter que passar pela interpretação novamente linha a linha. No entanto, no caso de funções e código que apareçam poucas vezes e que não seja necessário aumentar a performance via compilação, o compilador JIT irá apenas interpretar, executar e passar para frente.
Em geral, o compilador JIT só compila código que aparece mais vezes, para evitar executar linha a linha sempre as funções recorrentes e para quando aparecer uma vez, ou poucas vezes, o compilador apenas vai interpretar o código, pois não há ganho de performance em compilar.
Fico à disposição em caso de dúvidas.
Um grande abraço e bons estudos!
Muito obrigada pela explicação! Ajudou bastante :)