comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

Probamos PHP7 : La batalla por el rendimiento by IRONTEC

  • 0 Respuestas
  • 1126 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado graphixx

  • *
  • Moderador
  • Mensajes: 1258
  • Actividad:
    43.33%
  • Reputación 17
  • Científico de BIG DATA
    • Ver Perfil
    • Sistemas y Controles
« en: Agosto 11, 2015, 04:09:17 am »
Probamos PHP7: La batalla por el rendimiento

El pasado 8 de junio se cumplieron 20 años de la primera versión del lenguaje PHP y mucho han cambiado las cosas desde aquella sencilla API C para web de código abierto. Son muchas las funcionalidades implementadas desde entonces, adaptándose a los nuevos retos y exigencias de la web sin renunciar a sus raíces: ser un lenguaje flexible y sencillo de aprender, escribir, leer y depurar.

Ya es posible probar una versión temprana de lo que será la próxima “major release” de PHP, con la que la gente de Zend entra de lleno en la guerra del rendimiento.

Renunciando a PHP6

La sexta versión de PHP tenía un propósito central muy concreto, hacer uso de UTF-16 en el encoding interno del motor, objetivo que resultó ser mucho más complejo de lo previsto. Ante problemas aparentemente insalvables, que incluían fallos de retrocompatibilidad, se acabó optando por mover funcionalidades desarrolladas para PHP6 a PHP 5. Hoy PHP 6 queda para el recuerdo como algo que no pudo ser.

Cuando el rendimiento es crítico

El nuevo siglo trajo importantes retos al mundo web, portales web liderados por compañías como Facebook o Google se enfrentaban a concurrencias impensables pocos años antes. Por si fuera poco, el tráfico no dejaba de incrementar mes tras mes sin pronósticos claros de dónde podría estabilizarse. El caso de Facebook nos resulta especialmente interesante, por tratarse de una empresa que había confiado en PHP como lenguaje principal de desarrollo. Lenguaje al que no querían renunciar, pero les obligaba a hacer algo en cuanto al rendimiento: el objetivo era dar respuestas más inmediatas que mejorarán la experiencia de usuario, reducir el número de servidores y consumo de memoria.

Si bien es cierto que los cuellos de botella de las aplicaciones web vienen, en un 99% de los casos, dados por la base de datos, Facebook logró optimizarla lo suficiente vía caches como para empezar a preocuparse por el propio lenguaje de programación.

La empresa empezó reescribiendo porciones de código del núcleo PHP y publicándolo en forma de parches pero no lograban que el rendimiento mejorara a un ritmo satisfactorio. Más adelante desarrollaron HipHop for PHP, un traductor de código PHP a c++ que posteriormente compilaban con g++. Poco después, lo reemplazaron por HHVM (HipHop Virtual Machine), un compilador just in time que mejoraba más aún los resultados. No es que inventaran nada nuevo, ya existían soluciones parecidas en otros lenguajes como python e incluso en el propio PHP, aunque probablemente no con estos niveles de compatibilidad.

Les llevó años, pero Facebook lo había logrado: rendimiento altamente competitivo, con mejoras de rendimiento cercanas al 100%, sin renunciar a PHP.

La respuesta de Dmitry Stogov

No es que PHP no haya mejorado en lo que a rendimiento se refiere estos últimos años, todo lo contrario, pero aún estaba lejos de otros lenguajes y soluciones.



La nueva “major release” nace de una rama experimental liderada por el programador ruso Dmitry Stogov, miembro principal de grupo de desarrollo de PHP, y viene para competir de tú a tú con HHVM en aplicaciones reales. Como es natural, la séptima versión también traerá nuevas funcionalidades pero estas quedan fuera del alcance del artículo.

Resultados oficiales



Tal y como se puede apreciar en las imágenes los resultados varían en función del portal o framework empleado pero podemos hablar de una mejora media de entorno al 30% respecto a HHVM y 46% respecto a PHP5.6. Igualmente el consumo de memoria ha mejorado notoriamente con la implementación de un nuevo gestor de memoria.

Nuestras pruebas: 5.6 vs 7

En Irontec nos gusta ver las cosas con nuestros propios ojos y nos hemos hecho con una máquina virtual con PHP7  “Rasmus Lerdorf approved”. Dado que las propias fuentes de PHP incluyen tests sintéticos de rendimiento, decidimos empezar por ahí:

No tienes permisos para ver links. Registrate o Entra con tu cuenta

La mejora es radical, comprobemos si efectivamente esto se traslada a aplicaciones reales como WordPress:

No tienes permisos para ver links. Registrate o Entra con tu cuenta

Probablemente debido al uso de una versión más madura, nuestras pruebas arrojan resultados mejores a los oficiales.

Final round: Klear

No podíamos concluir el análisis sin poner a prueba nuestro framework para gestión de contenidos Klear. Cuando nos disponíamos a instalar el entorno vimos que la extensión en C para PHP que utilizamos habitualmente para parsear los ficheros .yaml aún no compila con PHP7. Klear hace un uso intensivo de este tipo de ficheros, lo que se lleva buena parte de los ciclos de cpu. Dado que aquí estábamos evaluando el rendimiento, no nos importo reemplazar dicha extensión por un parser PHP puro más lento que pusiera a prueba la nueva versión.

La siguiente tabla muestra el número de peticiones por segundo en pantallas rescatadas de proyectos reales con y sin accesos a base de datos.

No tienes permisos para ver links. Registrate o Entra con tu cuenta

Resumiendo

No cabe duda de que las perspectivas de PHP7 son emocionantes. Sin problemas de retrocompatibilidad destacables, en unos meses disfrutaremos de consumos de memoria y CPU significativamente más reducidos. Al menos nosotros, vamos a esperar la nueva versión de PHP  con los brazos abiertos.

Fuente:
No tienes permisos para ver links. Registrate o Entra con tu cuenta
No tienes permisos para ver links. Registrate o Entra con tu cuenta

 

¿Te gustó el post? COMPARTILO!



[INFOGRAFIA] PHP7 by ZEND

Iniciado por graphixx

Respuestas: 0
Vistas: 860
Último mensaje Agosto 12, 2015, 03:23:37 pm
por graphixx