JIT - La principal novedad de PHP 8. ¿Cómo habilitarla en la nueva versión del lenguaje?

Ronaldo B.27 de julio de 20224 min de lectura

En este artículo

PHP 8 trajo muchas novedades, pero una de las que más llamó la atención o que al menos más se comentó fue JIT. Hablamos sobre lo que significa esta sigla y cómo impacta en el rendimiento de un lenguaje de programación en nuestro artículo ¿Cuál es la diferencia entre lenguaje compilado, interpretado y JIT (Just in Time)?.

No obstante, como el JIT es una novedad de la versión 8 de PHP, en este artículo mostraremos cómo habilitar este recurso en PHP y también daremos nuestra opinión sobre cómo el JIT podría impactar el uso de este lenguaje.

Mostramos en nuestro Blog cómo realizar la instalación de PHP 8 tanto en Windows como en Linux. Puedes acceder a este contenido en los enlaces a continuación:

PHP 8 - Instalación y Configuración en Ubuntu 20.04 y Windows

PHP 8 en Windows 10 con servidor Nginx

Habilitando OPcache en PHP

OPcache es una extensión que permite almacenar el código PHP precompilado en caché, buscando una mejor rendimiento del lenguaje. El JIT fue implementado en PHP a través de esta extensión. Por eso, lo primero que necesitamos hacer es habilitarla.

Después de haber instalado PHP 8, vamos a acceder al archivo php.ini y habilitar la línea de configuración zend_extension, como vemos a continuación:

zend_extension=opcache

Nota que para habilitar una configuración en el archivo php.ini, basta con retirar el signo de punto y coma (;) al inicio de la línea.

Además de esta configuración, habilitaremos las directivas opcache.enable y opcache.enable_cli, como vemos a continuación:

opcache.enable=1
opcache.enable_cli=1

Al ejecutar la función phpinfo() en un archivo, deberíamos ver la siguiente sección de información sobre PHP:

Sección de OPcache en la información de PHP

Ahora el OPcache está habilitado. El siguiente paso es habilitar el JIT a partir de esta extensión.

Habilitando el JIT en PHP 8

Necesitamos insertar tres directivas para habilitar el JIT. Es posible que no las encuentres en el archivo php.ini. Si ese es el caso, basta con agregar estas directivas al archivo, en lugar de editarlas.

La primera es opcache.jit_buffer_size. Esta define la cantidad de buffer de memoria que se reservará para la generación de código nativo. Por defecto, esta directiva es 0, lo que deshabilita el JIT. Por lo tanto, si deseamos habilitarlo, solo tenemos que informar una cantidad de memoria destinada a ello. Haremos esto en php.ini usando el siguiente código:

opcache.jit_buffer_size=100M

La segunda configuración es opcache.jit. Esta define un conjunto de configuraciones para el JIT en PHP. Esta directiva es un conjunto de cuatro dígitos. Cada uno de ellos representa una configuración específica. El conjunto recomendado es el número 1235, pero podríamos usar un número diferente si lo deseamos. Esta directiva quedará de la siguiente manera:

opcache.jit=1235

Por último, pero no menos importante, tenemos la directiva opcache.jit_debug. Esta controla cómo se depurará el código. Esta configuración quedará de la siguiente forma:

opcache.jit_debug=1

Ahora, al reiniciar el servidor y acceder a la información de PHP, veremos la siguiente línea en el bloque de OPcache:

JIT habilitado en PHP

Nota que ahora el JIT está habilitado en nuestro PHP ?.

¿Cómo ayudará el JIT al lenguaje PHP?

El sitio de PHP nos trae un gráfico muy interesante que muestra algunas mejoras de rendimiento al realizar algunas pruebas de código con el JIT:

Gráfico de comparación de velocidad de PHP 8

Puedes notar que la diferencia de velocidad es realmente impresionante. No obstante, ya se ha constatado que es posible notar aún más el poder del JIT cuando necesitamos ejecutar códigos que requieren un gran consumo de CPU, o códigos que requieren un alto procesamiento de datos.

Quizás no estemos tan acostumbrados a este concepto en PHP ya que este es un lenguaje muy orientado a la Web. Pensando en esto, la inserción del JIT puede traer un nuevo horizonte de posibilidades para PHP, ahora fuera de la Web. Piensa, por ejemplo, en Inteligencia Artificial, Machine Learning o incluso Desarrollo de juegos. Todos estos son entornos que requieren mucho procesamiento de datos y que PHP, hasta el momento, no se ha aventurado tanto.

Conclusión

La inclusión del JIT en PHP puede ser un divisor de aguas para el lenguaje. Esto significa que podríamos estar presenciando un momento histórico, el comienzo de la posible expansión de PHP, que podría aumentar su área de actuación, saliendo del contexto único de la Web y comenzando a “alcanzar nuevos vuelos”.

Todas estas son las posibilidades que el JIT puede traer para PHP. Pero solo el tiempo dirá cuáles de estas suposiciones se han convertido en realidad. Lo que nos queda ahora es esperar y continuar estudiando ?.

Hasta el próximo artículo :).

Sigue aprendiendo con Hcode

Regístrate en la plataforma de cursos y sigue las próximas guías del blog.