Facebook cria uma “máquina virtual” para a linguagem PHP

A “HipHop Virtual Machine” é capaz de executar código em PHP até nove vezes mais rápido que o interpretador nativo da linguagem.

Author Photo
2:05 pm - 30 de julho de 2013

O Facebook deu mais um passo em sua jornada para tornar a execução de código em PHP mais rápida. A empresa desenvolveu uma máquina virtual que afirma ser capaz de executar programas nesta linguagem até nove mais mais rápido que usando o interpretador nativo em sistemas de grande porte.

“Nosso objetivo é fazer PHP rodar muito, muito rápido”, diz Joel Pobar, um gerente de engenharia do Facebook. A empresa vem usando a máquina virtual, apelidada de “HipHop Virtual Machine (HHVM) em todos os seus servidores desde o início deste ano.

Pobar discutiu detalhes sobre a tecnologia durante a Open Source Conference (OSCON), evento organizado pela editora O’Reilly que acontece nesta semana em Portland, no Oregon.

A HHVM não é a primeira vez que o Facebook tenha otimizar o PHP para execução mais rápida. A linguagem é interpretada, o que significa que cada instrução em um programa tem que ser analisada e convertida em linguagem de máquina, para só então ser processada, a cada vez que o programa é executado. Em termos gerais, programas escritos em linguagens interpretadas tendem a rodar mais lentamente que os escritos em linguagens como C ou C++, que são compilados apenas uma vez para linguagem de máquina. O Facebook se mantém leal ao PHP porque é uma linguagem de programação com a qual os programadores que trabalham para a empresa estão amplamente familiarizados.

Mas para acompanhar a insaciável demanda dos usuários o Facebook originalmente projetou um compilador, chamado HipHop, capaz de traduzir código PHP em C++, para que pudesse ser compilado e executado com maior desempenho.

Embora o Facebook tenha conseguido consideráveis ganhos de desempenho com a primeira versão do HipHop por vários anos, a empresa procurou outras formas de acelerar a entrega a cerca de um bilhão de usuários de páginas criadas dinâmicamente. “Os ganhos de desempenho nessa estratégia estavam se esgotando”, admitiu Pobar.

A HHVM é o próximo passo para o Facebook. Em desenvolvimento há cerca de três anos, a HHVM funciona de acordo com os mesmos princípios de uma máquina virtual Java (JVM) e tem um compilador em tempo de execução (JIT) que converte o código fonte em PHP em linguagem de máquina à medida em que é necessário. A versão antiga do HipHop, renomeada como HPHPc, foi aposentada pelo Facebook.

A nova abordagem permite que a máquina virtual “faca decisões mais inteligentes em tempo de execução”, disse Pobar. Por exemplo, se uma chamada a um banco de dados é feita para ler uma linha de dados, a HHVM pode determinar, em tempo real, qual tipo de dado está sendo acessado, como números inteiros ou strings (conjuntos de caracteres), e gerar dinâmicamente código que é mais adequado para lidar com este tipo de dados em específico.

O antigo HipHop, “no melhor dos casos poderia analisar toda a base de código do Facebook, estudar seu funcionamento e especializar o código de acordo com esta análise. Mas nem sempre é possível acertar na análise, há partes do código que você simplesmente não pode inferir”, disse Pobar.

Pobar estima que a HHVM é cerca de duas vezes mais rápida que a HPHPc e cerca de nove vezes mais rápida que o interpretador PHP original.

O Facebook colocou o código-fonte da HHVM no GitHub, na esperança de que outros o usem para acelerar seus próprios sites. A HHVM é otimizada para lidar com bases de código PHP muito grandes e intensamente utilizadas. Pobar admite que usar a HHVM em um site comum, como um que hospeda um blog em WordPress, produzirá um ganho de desempenho de “apenas” cinco vezes em relação ao interpretador original.

“Há casos em que o tempo de execução no processador pode não ser o fator limitante no desempenho de um código em PHP. Pode ser que o sistema esteja gastando tempo demais conversando com o banco de dados, ou o cache de memória”, disse Pobar.

Newsletter de tecnologia para você

Os melhores conteúdos do IT Forum na sua caixa de entrada.