Just in Time e o PHP 8

Paulo Cunha
2 min readJun 30, 2020

--

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.
Processo de interpretação e execução de um código PHP

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.

--

--