HipHop for PHP

El genio ha salio de la lampara, Haiping Zhao uno de los principales Ingenieros de desarrollo de Facebook revela la noticia, ya existian rumores de que la gente de Facebook estuviese desarrollando un PHP compilado o una forma de compilar el codigo PHP para optimizar y ganar en rendimiento y velocidad (realmente encontrar nuevas formas de mejorar el rendimiento de PHP no es un concepto nuevo). Recordemos que Facebook es un servicio usado por millones de personas y que al momento de cargar tu web debe cargar la actualizacion mas relevantes de todos tus amigos, todo esto en menos de 1 segundo para lo cual usan un servicio personalizado que han creado y al cual han llamado “alimentacion multiple”, el cual consiste en filtrar los resultados basándose en la configuración de privacidad, y luego rellenar las historias con los comentarios, fotos y demas etc que vemos en nuestro pagina de Facebook. Zhao hace publica la noticia del HipHop for PHP del cual habra un streaming a las 7:30pm (hora del Pacifico) explicandolo mas a fondo, en el mismo link donde se indica la noticia para revelar mas informacion sobre ello.

Pero que es exactamente este “HipHop for PHP”, Zhao indica que tecnicamente no es un compilador para PHP, es un transformador de codigo fuente PHP optimizado a C++ que luego usa g++ para compilarlo. HipHop incluye un transformador de código, una reimplementación del sistema de ejecución de PHP, y una reescritura de las extensiones de PHP muchos puntos en común para tomar ventaja de estas optimizaciones de rendimiento.  Zhao indica que con HipHop for PHP han reducido mucho el uso del CPU en los servidores de Facebook (en un 50% dependiendo tambien de la pagina) lo cual significa, menos servidores y menos gastos.

Volviendo a hacer un repaso breve y rapido y para quienes no sepan, Facebook esta hecho en PHP el cual es un lenguaje de escript, los lenguajes interpretados (no compilados) como lo es PHP no tienen su fuerte en el rendimiento del CPU (uso de la CPU y memoria).  Con el proposito de buscar el ser mas rapidos (muy logico buscar esto para la gente del servicio facebook), los ingenieros de Facebook han implementado (para abordar esta deficiencia como sostiene Zhao) el de volver a reescribir las partes mas complejas de la aplicacion basada en PHP directamente en C++ con extensiones PHP.  Recordemos tambien que PHP esta hecho en C por lo que para solventar esto, han iniciado atacarlo desde la raiz u origines.  Zhao indica que tecnicamente esto les ha funcionado muy bien pero reduce drasticamente el numero de ingenieros que son capaces de trabajar en su aplicacion de forma mas completa (comparando lo tradicional a como seria ahora con esta implementacion lo cual es algo nuevo).  Aprender C++ solo es el 1er paso para escribir extensiones PHP, el 2do paso seria entender la API de Zend, en vista de que el equipo de trabajo del cual tambien pertenece Zhao es pequeno, es comprensible que se tengan en mente el que este proyecto este direccionado hacia el Open Source lo cual aportaria mas apoyo por parte de comunidades de desarrolladores en todo el mundo.

Zhao:

Estamos muy emocionados de evolucionar HipHop en un proyecto de código abierto próspero junto con todos ustedes.

Zhao escribe que HipHop les ofrece una mejor lógica que hace el montaje final de la página en PHP  para luego modificarla rápidamente. Zhao comenta que desde el 2007 han evaluado el como atacar estos problemas del lenguaje vs optimizacion del servicio basado en este, incluso el pensar cambiar el lenguaje de programacion de Facebook, pero dado el tiempo y la complejidad de un nuevo desarrollo desde cero (0) aun teniendo toda la estructura de este enorme sistema (estamos hablando de quien sabe cuantos paginas bajo las cuales se sostiene Facebook), en vez de iniciar todo con otro lenguaje, prefirieron reescribir al mismo motor de zend interno de PHP y parchar al Facebook de esa forma, aunque no han visto el aumento de rendimiento que necesitan.

Zhao indica:

Proyectos de fuente abierta tales como APC y caché eAccelerator son utilizados por la mayoría de los sitios web de PHP powered. También hay Zend servidor, un producto comercial que hace más rápido de PHP a través de la optimización de código de operación y almacenamiento en caché. En cambio, estábamos pensando en la transformación del codigo fuente de PHP directamente en C + +, que luego se puede convertir en código de máquina nativo. Incluso la compilación de PHP no es una idea nueva, los proyectos de código abierto como Roadsend y APS compilan PHP a C, Quercus compila PHP a Java, y Phalanger compila PHP para .Net.

Ocho meses más tarde, tuve el código suficiente para demostrar que efectivamente es posible correr más rápido con el código compilado. Rápidamente se unieron Iain Proctor y Yang Minghui al equipo para acelerar el ritmo del proyecto. Pasamos los próximos diez meses de terminar todo el código y los siguientes seis meses de prueba en los servidores de producción. Estamos orgullosos de decir que en este momento, estamos sirviendo a más del 90% de nuestro tráfico Web usando HipHop, todos sólo seis meses después de la implementación.

Como funciona HipHop?

Siendo como principal objetio reducir las diferencias entre PHP y C++ (siendo PHP de tipeado dinamico pero debil) y (C++ con tipos estaticos compilado).  Zhao: Es más probable que usted vea if (...) {...} else {..} de lo que es ver a function foo($x) { include $x; } Aquí es donde se gana en rendimiento.

El proceso de transformación incluye tres pasos principales:

  1. Análisis estático, donde recopilar información sobre lo que declara y dependencias,
  2. Inferencia de tipos en los que elegir el tipo más específico entre C + + escalares, String, Array, clases, objetos, y la variante, y
  3. La generación de código que en su mayor parte es una correspondencia directa de las declaraciones de PHP y expresiones para C + + y expresiones.


Tambien desarrollaron HPHPi, que es un intérprete experimentales para el desarrollo. Cuando se utiliza HPHPi no es necesario compilar el código fuente de PHP antes de ejecutarlo, ayudando a detectar los errores en HipHop.

Zhao:

En general HipHop nos permite mantener los mejores aspectos de PHP y se aprovecha de las ventajas de rendimiento de C + +. En total, hemos escrito más de 300.000 líneas de código y más de 5.000 pruebas de unidad. Todo esto se dará a conocer esta tarde en GitHub de código abierto bajo la licencia PHP.

Más información esta noche (02.02.2010)

Zhao informa que esta noche organizaran un pequeno grupo de desarrolladores para explicar este HipHip para PHP por medio de un Streaming en vivo, pidiendo volver  a esta noticia a las 7:30pm hora del Pacifico para quienes les interese saber mas sobre esto. Seguros de que habra muchas preguntas, indica el link de la wiki HipHop o el unirse a la lista de correo de desarrolladores HipHop., y otros links como son FOSDEM, ESCALA, PHP Reino Unido, ConFoo,, CTMA X y OSCON en los proximos meses, donde estaran hablando sobre HipHop para PHP.

Streaming de HipHop for PHP

Entonces el HPHP del cual habian rumores no seria tanto como decir HyperPHP sino conocido como la tecnologia HipHop (HPHP) para PHP bajo su interprete experimental HPHPi (que a mi entender seria HipHop Interpreter), siendo HipHop lo mas cercano hasta la fecha de la compilacion de los script de PHP a C++.


About this entry