texto strip_tags remove quitar para limpiar funcion etiquetas ejemplo php language-design

strip_tags - ¿Qué hace PHP más lento que Java o C#?



strip_tags wordpress (8)

Esto es algo que siempre me he preguntado: ¿por qué PHP es más lento que Java o C #, si los tres de estos lenguajes se compilan en bytecode y luego se ejecutan desde allí? Sé que normalmente PHP compila cada archivo con cada solicitud, pero incluso cuando traes APC (un caché de bytecode) a la imagen, el rendimiento no se acerca al de Java o C # (aunque APC lo mejora considerablemente).

Edición: Ni siquiera estoy hablando de estos idiomas en el nivel web. Estoy hablando de la comparación de ellos cuando son números crujidos. Ni siquiera incluye el tiempo de inicio ni nada de eso.

Además, no estoy tomando algún tipo de decisión basada en las respuestas aquí. PHP es mi idioma de elección; Simplemente tenía curiosidad por su diseño.


Depende de lo que quieras hacer. En algunos casos, PHP es definitivamente más rápido. PHP es (bastante) bueno en la manipulación de archivos y otras cosas básicas (también cosas XML). Java o C # pueden ser más lentos en esos casos (aunque no hice un benchmark).

Además, la salida de PHP (HTML o lo que sea) debe descargarse en el navegador, que también consume tiempo.

Además, la velocidad de Java / C # depende en gran medida de la máquina en la que se ejecuta (que podría ser múltiple). Java / C # podría ser lento en su computadora, mientras que PHP solo se ejecuta en un servidor desde el cual está disponible y siempre es tan rápido como el servidor (excepto los tiempos de descarga, etc.).

No creo que sean comparables de manera general. Creo que necesita tomar una tarea, que podría lograrse con esos tres lenguajes de programación, y luego compararla. Básicamente, eso es lo que debe hacer al elegir un lenguaje de programación; Encuentra el que se ajuste a la tarea. No dé forma a la tarea hasta que se ajuste al lenguaje de programación.


La razón más importante es que la JVM HotSpot de Java y el CLR de C # usan la compilación Just-In-Time (JIT). La compilación JIT compila los códigos de byte a código nativo que se ejecuta directamente en el procesador.

También creo que el bytecode y el CIL de Java son de un nivel inferior al del bytecode interno de PHP, lo que podría hacer que muchas de las optimizaciones de JIT sean más fáciles y efectivas.


No hay forma de que un lenguaje interpretado pueda ser más rápido que un lenguaje compilado o incluso un lenguaje JIT en condiciones triviales.

A menos que su programa de prueba consista en imprimir "Hello Worlds" si le preocupa la velocidad, siga con C # o Java.



Supongo que estás un poco en la comparación de manzanas y naranjas aquí - asumiendo que estás utilizando todos estos lenguajes para crear aplicaciones web, hay mucho más que solo el idioma. (Y muchas veces es la base de datos la que te está ralentizando ;-)

Nunca sugeriría elegir uno de estos idiomas sobre el otro sobre la base de un argumento de velocidad .


Tanto Java como C # tienen compiladores JIT , que toman el código de bytes y compilan en código de máquina real. El acto de compilación puede llevar tiempo, por lo tanto, C # y Java pueden sufrir tiempos de inicio más lentos, pero una vez que el código se compila JIT, su rendimiento está en el mismo campo de juego que cualquier lenguaje "realmente compilado" como C ++.


Una de las razones es la falta de un compilador JIT en PHP, como han mencionado otros.

Otra gran razón es la escritura dinámica de PHP. Un lenguaje de tipo dinámico siempre será más lento que un lenguaje de tipo estático, porque los tipos de variables se verifican en tiempo de ejecución en lugar de en tiempo de compilación. Como resultado, los lenguajes con tipos estáticos como C # y Java serán significativamente más rápidos en el tiempo de ejecución, aunque normalmente tienen que compilarse con anticipación. Un compilador JIT hace que este sea un problema menor para los lenguajes de tipo dinámico, pero, por desgracia, PHP no tiene uno incorporado (aunque vea el HHVM de Facebook para ver un ejemplo de un JIT de terceros para PHP).


Una suposición descabellada podría ser que JAVA depende de algún tipo de servidor de "aplicaciones", mientras que PHP no, lo que significa que se debe crear un nuevo entorno cada vez que se llama una página PHP.

(Esto fue especialmente cierto cuando PHP se usó como CGI, y no como un módulo de Apache o mediante FastCGI)


Otra idea podría ser que los compiladores de C # y JAVA pueden hacer algunas optimizaciones pesadas en tiempo de compilación, en el otro lado, ya que los scripts de PHP se compilan (al menos, si no hace "trampa" con un caché de código de operación) cada vez que una página Se llama, la fase de compilación tiene que ser muy rápida; lo que significa que no es posible pasar mucho tiempo optimizando.


Aún así: cada versión de PHP generalmente viene con alguna mejora de las actuaciones; por ejemplo, puede ganar entre el 15% y el 25% de la CPU, al cambiar de PHP 5.2 a 5.3.

Por ejemplo, eche un vistazo a esos puntos de referencia:


Una cosa importante, también, es que PHP es bastante fácil de escalar: ¡solo agregue un par de servidores web, y listo!

El problema con el que se encuentra a menudo al pasar de 1 a varios servidores es con las sesiones: guárdelas en DB o memcached (muy fácil) , ¡y el problema se resolvió!


Como comentario adicional: no recomendaría elegir una tecnología porque hay un par de diferencias de velocidad en algunos puntos de referencia: hay factores mucho más importantes, como qué tan bien conoce su equipo cada tecnología, o incluso, los algoritmos que utiliza. voy a utilizar!