Symfony y Twig ya son compatibles con HHVM

Facebook es el sitio web más popular del mundo y la aplicación PHP más grande jamás creada. Actualmente tiene más de 1.150 millones de usuarios, a los que sirve cientos de miles de millones de páginas cada mes. A pesar de los cambios tecnológicos surgidos en los últimos años, Facebook permanece fiel a PHP desde sus comienzos en 2004. A modo de anécdota, puedes ver parte del código fuente de Facebook en 2007.

Según los datos aportados por Facebook en su presentación Taking PHP Seriously, el repositorio de código de Facebook contiene decenas de millones de líneas de código PHP. Además, en la misma presentación se comenta que "los buenos ingenieros son increíblemente productivos al programar con PHP". Por todo esto, parece improbable que Facebook cambie PHP por algún otro lenguaje, al menos a medio plazo.

Como PHP es un lenguaje interpretado, su ejecución siempre es más lenta que la de los lenguajes compilados como Java o C++. Para mejorar el rendimiento de PHP, los ingenieros de Facebook desarrollaron una herramienta llamada HipHop y que transformaba el código PHP en código C++ para poder compilarlo antes de ejecutarlo. A pesar de que parecía una herramienta muy prometedora, su uso no era sencillo, por lo que solamente merecía la pena su uso para las aplicaciones PHP gigantescas, como por ejemplo Tuenti.

Debido a todos estos problemas, los mismos ingenieros de Facebook desarrollaron otra herramienta llamada HHVM (HipHop Virtual Machine) y que ha reemplazado a HipHop, declarada obsoleta desde principios de 2013. HHVM es esencialmente una máquina virtual para ejecutar PHP, un concepto similar al utilizado por Java. Hace unas semanas, el equipo de Facebook presentó la nueva versión de HHVM, más rápida que HipHop pero con un grave problema: todas las suites de tests de todos los proyectos importantes de PHP producían errores, entre ellos Symfony2 y Twig.

Hoy Facebook ha presentado la nueva versión HHVM 2.2.0, que puede marcar un antes y un después en la historia de PHP, ya que:

  • Su instalación es muy sencilla, ya que se distribuye como paquete para Ubuntu, Debian, Fedora y Mint.
  • Mejora significativamente la compatibilidad con las nuevas funcionalidades de PHP 5.4.
  • Añade compatibilidad total con las aplicaciones Symfony2, las plantillas Twig y las aplicaciones de otros frameworks como Laravel y CodeIgniter.

Facebook ha prometido seguir mejorando HHVM hasta conseguir ejecutar correctamente cualquier aplicación PHP 5.4/5.5. Si lo consigue y sigue mejorando su instalación y uso, HHVM podría convertirse en un serio rival del Zend Engine con el que se han ejecutado la mayoría de aplicaciones PHP desde hace más de 10 años.

Actualización 22 octubre: los primeros benchmarks muestran que las aplicaciones Symfony ejecutadas sobre HHVM mejoran su rendimiento más de un 400%: ver resultados del benchmark

Comentarios

  1. Que buena noticia!! creo que la gente de Resin tambien esta haciendo avances, tiene una muy buena performance

    Roberto German Puentes Diaz el 21 de octubre de 2013, 14:53:29

  2. Usando un simple test : gist.github.com/puentesdiaz/7086714

    Mi apache tiene:

    • APC Version: 3.1.13
    • PHP Version: 5.4.9-4ubuntu2
    • APC Host: localhost (NB) (127.0.0.1)
    • Server Software: Apache/2.2.22 (Ubuntu)
    Engine Duración
    Apache+PHP 8.1604177951813
    Resin Server 4.0.36 4.3678660392761
    HHVM 2.2.0 2.2583630084991

    ¿Alguien tiene un mejor script para probar?

    Roberto German Puentes Diaz el 21 de octubre de 2013, 18:42:46

  3. grandioso! ya tengo plan para este fin de semana

    Wladimir Avila el 22 de octubre de 2013, 3:20:36

  4. @Roberto, lo ideal sería que pudieras probar una aplicación Symfony2. He leído en Twitter algunos comentarios sobre mejoras de rendimiento de más del 300% y estaría bien poder comprobarlo.

    Javier Eguiluz el 22 de octubre de 2013, 9:29:48

  5. Muchísimas gracias por la información, esto si que es prometedor. Espero que sigan adelante.

    Jose Carlos Campos el 23 de octubre de 2013, 21:56:55

  6. Por si a alguien le interesa, unos benchmarks con Symfony en HHVM: blog.liip.ch/archive/2013/10/29/hhvm-and-symfony2.html

    Guillermo G. el 29 de octubre de 2013, 16:11:00

  7. Hay que afinar el php.ini de hhvm, aun tiene problemas con el date.timezone https://github.com/facebook/hhvm/issues/1222

    pero por el rendimiento he obtenido un factor de 25X en algo sencillo como una funcion fibonacci por el resto , me da similar a otros test http://symfony.puentesdiaz.com.ar/php-performance-hhvm-php5-5-opcache/

    Roberto German Puentes Diaz el 2 de noviembre de 2013, 15:26:54

Este artículo ya no permite añadir más comentarios.
¿Por qué? Los artículos cierran sus comentarios automáticamente unos meses después de su publicación para asegurar que estos sigan siendo relevantes.

Publicada el

18 de octubre de 2013

Etiquetas

Proyectos Symfony destacados

La forma más sencilla de generar el backend de tus aplicaciones Symfony. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.