PHP y el compilador JIT

Posted by victor on March 9th, 2013
php-logoHoy he leído una interesante discusión en la Internals list de PHP sobre incluir un compilador JIT como parte del núcleo de PHP para transformar los bytescodes de los script a código nativo de la máquina en la que se ejecuta. Esto conllevaría una mejora de rendimiento, como la que obtiene Facebook con HHVM -HipHop Virtual Machine-. La discusión comienza cuando un usuario sugiere que sería muy interesante incluir en el núcleo de PHP un compilador al estilo HHVM para mejorar el rendimiento. Inmediatamente contesta Rasmus Lerdorf, creador de PHP, que HHVM no sería la solución más adecuada sino que la mejor aproximación sería un compilador basado en LLVM -Low Level Virtual Machine-. Tras varias contestaciones, incluidas las de Sara Golemon, ingeniera de Facebook, se concluye que HHVM no es la mejor opción puesto que se trata de una reimplementación completa de PHP y no podría unirse al núcleo. La solución aportada por Sara Golemon consiste en adjuntar el compilador JIT como una extensión e interceptar la función zend_compile_file, al estilo de APC, para realizaría el paso de bytescodes a código nativo durante la primera ejecución. El resto de ejecuciones invocarían al compilador JIT que lanzaría el código compilado. Incluir mecanismo de este tipo es una petición muy generalizada a muchos usuarios de PHP y es que, si bien PHP en consola es realmente rápido, cuando interactúa con con  el servidor para resolver peticiones merma un poco en rendimiento. Esto es lo que ha llevado a Facebook, una red social desarrollada, en su mayor parte en PHP, a buscar alternativas que permitan ganar en velocidad.   GitHub: HipHop de Facebook. GitHub: LLVM para PHP. (Es una primera aproximación y tiene mucho que mejorar) LLVM: Developer Group. YoSymfony: Escalabilidad y rendimiento en PHP.

Comments

comments powered by Disqus