¿Hay algún punto para minificar PHP?

7 minutos de lectura

avatar de usuario
Bojangles

Te conozco pueden minify PHP, pero me pregunto si hay algún punto. PHP es un lenguaje interpretado, por lo que se ejecutará un poco más lento que un lenguaje compilado. Mi pregunta es: ¿los clientes verían una mejora visible de la velocidad en las cargas de página y tal si tuviera que minimizar mi PHP?

Además, ¿hay alguna forma de compilar PHP o algo similar?

  • Un punto obvio es la ofuscación, para hacer que su código sea menos portátil, lo que puede ser un objetivo válido.

    – John

    10 de julio de 2018 a las 22:27

  • Otro punto es ahorrar espacio en el servidor (si eso es importante),

    – Jorge Ogden

    1 de septiembre de 2020 a las 16:20

avatar de usuario
Charles

PHP se compila en código de bytes, que luego se interpreta sobre algo parecido a una máquina virtual. Muchos otros lenguajes de secuencias de comandos siguen el mismo proceso general, incluidos Perl y Ruby. No es realmente un lenguaje interpretado tradicional como, digamos, BASIC.

No habría un aumento de velocidad efectivo si intentara “minificar” la fuente. Obtendría un aumento importante usando un caché de bytecode como APC.

Facebook introdujo un compilador llamado Hip hop que transforma la fuente PHP en código C++. Rasmus Lerdorf, uno de los grandes de PHP hizo un presentación para Digg a principios de este año que cubre las mejoras de rendimiento proporcionadas por HipHop. En resumen, no es mucho más rápido que optimizar el código y usar un caché de bytecode. HipHop es una exageración para la mayoría de los usuarios.

Facebook también dio a conocer recientemente H HVM, una nueva máquina virtual basada en su trabajo haciendo HipHop. Todavía es bastante nuevo y no está claro si proporcionará un gran impulso al rendimiento para el público en general.

Solo para asegurarse de que se indique expresamente, lea esa presentación en su totalidad. Señala numerosas formas de comparar y perfilar el código e identificar cuellos de botella utilizando herramientas como xdebug y xhproftambién de Facebook.


Actualización 2021

HHVM se separó de Vanilla PHP hace un par de versiones. PHP 7 y 8 traen un montón de increíbles mejoras de rendimiento que prácticamente han cerrado la brecha. ¡Ya no necesita hacer cosas raras para obtener un mejor rendimiento de PHP!

Minimizar el código fuente de PHP sigue siendo inútil por motivos de rendimiento.

  • Tenga en cuenta que todo el asunto del código de bytes/vm en realidad no le compra nada sin un caché de código de bytes externo (!). No entiendo por qué PHP sigue descartando el código de bytes de forma predeterminada …

    usuario395760

    2 de noviembre de 2010 a las 17:25

  • Me imagino que es un problema de hosting compartido. APC se incluye en PHP de forma predeterminada a partir del antiguo tronco basado en 6.0. No estoy seguro de si lo veremos por defecto en 5.4 o como se llame el nuevo tronco…

    – Charles

    2 de noviembre de 2010 a las 17:27

  • Muchas gracias por la información. Desafortunadamente, no tengo un control profundo de mi servidor (es alquilado). ¿Es probable que los servidores web usen APC?

    – Bojangles

    2 de noviembre de 2010 a las 17:29

  • La mayoría de los proveedores de alojamiento compartido no utilizan APC. Debe buscar en un servidor privado virtual para que pueda controlar la configuración. Los VPS suelen ser más caros que el alojamiento compartido normal, pero mucho menos caros que un servidor dedicado real. Los proveedores populares de VPS incluyen Slicehost y Linode. No olvide que debe evaluar comparativamente y perfilar su código primero!

    – Charles

    2 de noviembre de 2010 a las 17:35


  • ¿Hay algún beneficio en hacer el código más compacto? ¿Le tomará menos tiempo a AJAX enviar una solicitud al archivo y obtener una respuesta?

    – leche eléctrica

    18 de noviembre de 2020 a las 19:44

avatar de usuario
Esteban

Renuncie a la idea de minimizar PHP a favor de usar un caché de código de operación, como PHP Acceleratoro APC.

O algo más como memcached

  • no está claro si quiere decir algo más que un caché de código de operación.

    – Treffynon

    2 de noviembre de 2010 a las 16:58

  • memcached es una forma perfectamente cromulenta de mejorar el rendimiento… después de realizar evaluaciones comparativas y perfiles y establecer que el almacenamiento en caché en sí mismo será la mejor ganancia de rendimiento posible.

    – Charles

    2 de noviembre de 2010 a las 16:58

  • si está utilizando PHP 5.5, no necesita instalar ningún caché de código de operación porque ahora viene con él de forma predeterminada.

    – cortafuegos

    21 de enero de 2015 a las 12:58

  • De hecho, busqué cromulent :(. Estoy de acuerdo con los demás, usar memcached en este contexto es engañoso. El almacenamiento en caché de datos como parte del proceso de compilación no es lo mismo que el código de operación resultante.

    –Mike Purcell

    1 oct 2015 a las 19:07

Sí, hay un punto (no técnico).

Su proveedor puede espiar su código en su servidor. Si lo minimizas y lo afeas, es más difícil para los espías robar tus ideas.

Una de las razones para minimizar y afear php puede ser la protección contra espías. Creo que el código feo debería ser un paso en una implementación automática.

Con algo de reescritura (nombres de variables más cortos) podría ahorrar algunos bytes de memoria, pero eso rara vez es significativo.

Sin embargo, diseño algunas de mis aplicaciones de una manera que permite concatenar scripts de inclusión. Con php -w se puede compactar significativamente, agregando una pequeña ganancia de velocidad para el inicio del script. Sin embargo, en un servidor habilitado para código de operación, esto solo ahorra algunas comprobaciones de tiempo de archivo.

Esto es menos una respuesta que un anuncio. He estado trabajando en una extensión de PHP que traduce los códigos de operación de Zend para que se ejecuten en una máquina virtual con escritura estática. No acelera código PHP arbitrario. Le permite escribir código que se ejecuta mucho más rápido que lo que permite PHP normal. La clave aquí es la escritura estática. En una CPU moderna, un lenguaje dinámico se come la penalización por error de predicción de rama de izquierda a derecha. El hecho de que las matrices de PHP sean tablas hash también impone un alto costo: muchas predicciones erróneas de ramas, uso ineficiente de la memoria caché, recuperación previa de memoria deficiente y ninguna optimización SIMD en absoluto. La predicción errónea de ramas y las fallas de caché en particular son el talón de Aquiles para los procesadores de hoy. Mi pequeña VM evita esos problemas al usar tipos estáticos y una matriz C en lugar de una tabla hash. El resultado acaba siendo unas diez veces más rápido. Esto está utilizando la interpretación del código de bytes. La extensión puede compilar opcionalmente una función a través de gcc. En ese caso, obtienes de dos a cinco veces más velocidad.

Aquí os dejo el enlace para los interesados:

https://github.com/chung-leong/qb/wiki

Una vez más, la extensión no es un acelerador general de PHP. Tienes que escribir un código específico para ello.

avatar de usuario
Comunidad

Hay compiladores de PHP… vea esta pregunta anterior para obtener una lista; pero (a menos que sea del tamaño de Facebook o esté orientando su aplicación para que se ejecute en el lado del cliente) generalmente son mucho más problemáticos de lo que valen

El almacenamiento en caché de código de operación simple le dará más beneficios por el esfuerzo involucrado. O perfile su código para identificar los cuellos de botella y luego optimícelo.

No es necesario minificar PHP. Para obtener un mejor rendimiento, instale un caché Opcode; pero la solución ideal sería actualizar su PHP a la versión 5.5 o superior porque las versiones más nuevas tienen un caché de código de operación predeterminado llamado Zend Optimizer que funciona mejor que los demás. http://massivescale.blogspot.com/2013/06/php-55-zend-optimiser-opcache-vs-xcache.html.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad