Just in Time e o PHP 8
Just in Time vai expandir os horizontes do PHP!
Um código PHP passa por diversos passos até ser executado:
- Primeiro ele é transformado em tokens que dizem o que cada expressão significa. (Ex.: “echo ‘Olá, mundo!’;” se transforma em [T_ECHO => “echo”, T_CONSTANT_ENCAPSED_STRING => “‘Olá, mundo!’”]. Veja a função token_get_all() do PHP);
- Depois, esse conjunto de tokens é organizado em uma Árvore de Sintaxe Abstrata que dirá ao compilador quando executar cada um dos tokens;
- Aí então esta Árvore é compilada em Opcodes (Já ouviu falar em Opcache? Deixa nos comentários se pegou a referência). Opcodes são códigos interpretáveis pela Zend VM que é a máquina virtual do PHP;
- A Zend VM lê os Opcodes e os converte em linguagem de máquina que então são consumidos pela CPU.
Ufaa! Este processo é longo, e apesar de acontecer muito rápido, em muito menos que um segundo, dependendo da complexidade do código, ainda é lento para tarefas específicas como a computação científica.
O Opcache armazena em cache os opcodes e faz com que a execução salte direto para a Zend VM que os interpreta e manda para a CPU, isso faz o PHP rodar muito mais rápido, mas ainda lento para computação científica de alto desempenho como a Machine Learning.
O Just in Time que virá com o PHP 8 fará com que todo esse processo de gerar tokens, organizar em árvore, compilar em opcodes e interpretar estes opcodes seja ignorada.
Após ser executado pela primeira vez, o PHP passará a ser executado direto da CPU, saltando inclusive a Zend VM. O ganho de velocidade é extraordinário. Teste em computação científica já estão sendo feitos e os resultados estão sendo incríveis. O PHP irá abrir suas portas para a computação científica muito em breve e as fronteiras vão deixar de existir.
É claro que outras linguagens, especializadas em computação científica, ainda serão mais rápidas e eficientes para a área. Mas o PHP 8 trará a oportunidade de espalhar a computação científica na internet de forma muito mais fácil e acessível.