Facebook HipHop

Hip Hop es la herramienta desarrollada por Facebook que permite ejecutar PHP como binarios nativos de la plataforma. Las versiones iniciales se basaban en transformar una aplicación completa PHP a un binario nativo, mientras que las siguientes permitían convertir un único archivo PHP y sus dependencias a C++, y compilarlo.

Él último enfoque es HHVM, que funciona como el intérprete de bytecode de PHP, pero que es capaz de compilar Just In Time (JIT) ese bytecode a código nativo en memoria. El código nativo generado queda cacheado en una base de datos SQLite, de manera que si se vuelve a solicitar, no es necesario volver a compilarlo.

Lo mejor de todo, es que HHVM funciona como un demonio que actúa de servidor web, capaz de servir tanto contenido dinámico PHP, como contenido estático. No obstante lo que se recomienda es dejar que sea Nginx el que sirva todo el contenido, haciendo de proxy para HHVM cuando se trate de páginas PHP.

Usando el código de Rendimiento de adición de elementos a un array en PHP, y con una instalación sin ningún ajuste especial, he obtenido un 200% de mejora en cuanto a rendimiento. Esta mejora es en general más elevada cuanto más complejo sea el código, yendo según cifras oficiales entre el 50% y el 300%.

Lo malo de HipHop es que muchas extensiones que si están disponible para PHP, no lo están en HHVM. De modo que si usas OCI8, PostgreSQL, etc, no podrás hacerlo sobre HipHop.

Aunque se afirma que es compatible PHP 5.2 su mayor defecto es que no tiene implementadas algunas funciones y clases que si están disponibles en los PHP oficiales: filter_input, filter_var, ArrayObject… Claro que siempre podríamos implementarlo nosotros mismos en PHP, pero entonces obtendríamos una complejidad adicional, y probablemente una importante penalización de rendimiento, que es precisamente lo que intentamos evitar con Facebook HipHop.

Pienso que HipHop es una opción adecuada para nuevos proyectos que tengan una elevada carga, ya que pueden desarrollarse directamente sobre sus limitaciones. En el caso de tener que migrar de PHP normal a HipHop proyectos existentes, no debemos infravalorar la cantidad de esfuerzo que ello pueda suponer.

No dudo que esta tecnología tiene mucho potencial, y que de reactivarse el desarrollo de PHP pueda acabar incorporándose en la versión oficial de manera similar a como ocurriera con el motor de Zend. Por supuesto en el camino deberá superar sus carencias, no se si haciendo una implementación completa de las funciones y clases de PHP, o bien con un fallback automático que pase a modo bytecode cuando las características de la página no estén soportadas en HipHop. El soporte de plataformas como Windows, o MacOS, ayudará a que se popularice, y pueda usarse con facilidad en servidores de desarrollo locales. A partir de ahí, y con una base de usuarios más amplia, el soporte de nuevas extensiones será algo que vendrá de manera natural.

Puedes hacerte con él desde el propio repositorio GIT, pero seguramente prefieras hacerlo con los paquetes precompilados, o las instrucciones de compilación paso a paso.

Facebook HipHop

Deja un comentario