Facebook inventa una máquina virtual PHP

El gigante de las redes sociales Facebook ha dado otro paso para hacer que el lenguaje de programación PHP Web se ejecute más rápidamente. La compañía ha desarrollado una máquina virtual PHP que, según dice, puede ejecutar el lenguaje hasta nueve veces más rápido que ejecutar PHP de forma nativa en sistemas grandes.

"Nuestro objetivo es hacer que PHP se ejecute realmente, muy rápido", dijo Joel Pobar, gerente de ingeniería de Facebook. Facebook ha estado utilizando la máquina virtual, llamada HHVM (Máquina virtual HipHop), en todos sus servidores desde principios de este año.

[Aprenda a trabajar de forma más inteligente, no más difícil, con el resumen de todos los consejos y tendencias que los programadores deben conocer en la Guía de supervivencia para desarrolladores. ¡Descarga el PDF hoy! | Manténgase al día con las últimas noticias para desarrolladores con el boletín informativo Developer World. ]

Pobar habló sobre la máquina virtual en OSCON (O'Reilly Open Source Conference) que se lleva a cabo esta semana en Portland, Oregon.

HHVM no es la primera incursión de Facebook en la personalización de PHP para un uso más rápido. PHP es un lenguaje interpretado, lo que significa que el procesador ejecuta directamente el código fuente. En términos generales, los programas escritos en lenguajes interpretados como PHP tienden a no ejecutarse tan rápido como los lenguajes, como C o C ++, que se han compilado de antemano en código de bytes de lenguaje de máquina. Facebook se ha mantenido fiel a PHP porque muchos de los programadores web que trabajan para la empresa lo entienden ampliamente.

Sin embargo, para mantenerse al día con la demanda insaciable de los usuarios, Facebook diseñó originalmente un compilador, llamado HipHop, que traduciría el código PHP a C ++, por lo que podría compilarse con anticipación para un rendimiento más rápido.

Si bien Facebook disfrutó de considerables ganancias en el rendimiento de esta primera versión de HipHop durante varios años, buscó otras formas de acelerar la entrega de las páginas web creadas dinámicamente a sus mil millones de usuarios aproximadamente. "Nuestra estrategia de desempeño para eso iba a funcionar", admitió Pobar.

HHVM es el siguiente paso para Facebook. En desarrollo durante aproximadamente tres años, HHVM en realidad funciona con el mismo principio que la JVM (máquina virtual Java). HHVM tiene un compilador JIT (justo a tiempo) que convierte el código fuente legible por humanos en código de bytes legible por máquina cuando es necesario. (El HipHop anterior, renombrado HPHPc, ahora se ha retirado dentro de Facebook).

Este enfoque JIT permite que la máquina virtual "tome decisiones más inteligentes en tiempo de ejecución", dijo Pobar. Por ejemplo, si se realiza una llamada a la base de datos MySQL para leer una fila de datos, el HHVM puede, sobre la marcha, averiguar qué tipo de datos son, como un número entero o una cadena. Luego puede generar o llamar al código sobre la marcha que sería más adecuado para manejar este tipo particular de datos.

Con el antiguo HipHop, "lo mejor que puede hacer es analizar todo el código base de Facebook, razonar sobre ello y luego especializar el código en función de su razonamiento. Pero no puede acertar todo el razonamiento. Hay partes del código base que no se puede simplemente inferir o razonar ”, dijo Pobar.

Pobar estimó que HHVM es aproximadamente el doble de rápido que HPHPc, y aproximadamente nueve veces más rápido que ejecutar PHP directo.

Facebook ha publicado el código para HHVM en GitHub, con la esperanza de que otros también lo utilicen para acelerar sus sitios web PHP.

HHVM está optimizado para manejar bases de código PHP muy grandes y muy utilizadas. Pobar calculó que el uso de HHVM para sitios web de tamaño estándar, como uno que aloja un blog de Wordpress, solo aumentaría cinco veces el rendimiento.

"Si toma algo de PHP y lo ejecuta en HipHop, el tiempo de ejecución de la CPU [puede] no ser el factor limitante para el rendimiento. Es probable que [el sistema] pase demasiado tiempo hablando con la base de datos o demasiado tiempo hablando con [ la capa de almacenamiento en caché de "memcache", dijo Pobar.

Joab Jackson cubre el software empresarial y las últimas noticias de tecnología general para The News Service . Siga a Joab en Twitter en @Joab_Jackson. La dirección de correo electrónico de Joab es [email protected]