2008-09-16 20 views
33

¿Alguien sabe cómo la velocidad de los pilones (o cualquiera de los otros marcos) se compara con un sitio web similar hecho con php? Sé que servir una página base de python a través de cgi es más lento que php debido a su larga puesta en marcha todo el tiempo.¿Cuál es más rápido, páginas web de python o páginas web de php?

Me gusta usar pilones y aún así lo usaría si fuera más lento que php. Pero si las torres de alta tensión fueran más rápidas que las de php, tal vez, con suerte, eventualmente podría convencer a mi empleador para que me permita convertir el sitio en pilones.

Respuesta

85

Parece que usted no desea comparar las dos lenguas , pero que desea comparar dos sistemas web .

Esto es complicado, porque hay muchas variables involucradas.

Por ejemplo, las aplicaciones web de Python pueden aprovechar mod_wsgi para comunicarse con servidores web, lo que es más rápido que cualquiera de las formas típicas en que PHP habla con servidores web (incluso mod_php termina siendo más lento si usa Apache, porque Apache solo puede usar Prefork MPM con mod_php en lugar de MPM multihilo como Worker).

También está el problema de la compilación de código. Como usted sabe, Python se compila en el código Just-In-Time to Byte (archivos .pyc) cuando se ejecuta un archivo cada vez que cambia el archivo. Por lo tanto, después de la primera ejecución de un archivo de Python, el paso de compilación se omite y el intérprete de Python simplemente recupera el archivo .pyc precompilado. Debido a esto, uno podría argumentar que Python tiene una ventaja nativa sobre PHP. Sin embargo, los optimizadores y los sistemas de caché se pueden instalar para los sitios web de PHP (mi favorito es eAccelerator) con el mismo efecto.

En general, existen suficientes herramientas como para que uno pueda hacer prácticamente todo lo que el otro puede hacer. Por supuesto, como han mencionado otros, hay más que solo velocidad involucrada en el caso comercial para cambiar de idioma. Tenemos una aplicación escrita en oCaml en mi empleador actual, que resultó ser un error porque el autor original abandonó la empresa y nadie más quiere tocarla. Del mismo modo, la comunidad de PHP-web es mucho más grande que la comunidad de Python-web; Los servicios de alojamiento de sitios web son más propensos a ofrecer soporte de PHP que el soporte de Python; etc.

Pero vuelve a la velocidad. Debe reconocer que la cuestión de la velocidad implica muchas partes móviles. Afortunadamente, muchas de estas partes se pueden optimizar de forma independiente, ofreciéndole varias vías para obtener ganancias de rendimiento.

+15

El beneficio de los archivos compilados de código de bytes .pyc en Python está sobrevalorado al usar algo como Apache/mod_wsgi. Esto se debe a que solo entran en juego cuando el módulo de tiempo se carga por primera vez. Después de eso, todo está almacenado en la memoria caché entre las solicitudes. Los sistemas de caché de códigos de bytes son un problema mayor para PHP porque la aplicación se descarta efectivamente después de cada solicitud y, por lo tanto, tiene que volver a cargar el código para cada solicitud. –

1

Si no está roto, no lo arregles.

Simplemente escriba una prueba rápida, pero tenga en cuenta que cada idioma será más rápido con ciertas funciones que con la otra.

0

La única respuesta correcta es "Depende". Hay muchas variables que pueden afectar el rendimiento, y puede optimizar muchas cosas en cualquier situación.

1

Mira la lenguajes de programación tiroteo:

http://dada.perl.it/shootout/

+0

Ese índice de referencia parece un poco desactualizado, ya que solo usa PHP 4, que es significativamente diferente de PHP 5 en muchos aspectos, incluido el rendimiento. – selfawaresoup

+0

el shootout de Debian está más actualizado, aunque para una plataforma diferente. http://shootout.alioth.debian.org/u32q/benchmark.php?test=all&lang=php&lang2=python Esto muestra que son bastante similares: la enorme disparidad viene de python usando GMP para calcular dígitos pi. – Jimmy

1

Necesita ser capaz de hacer un caso de negocios para el cambio, no sólo que "es más rápido". Si un sitio construido con tecnología B cuesta un 20% más en tiempo de desarrollador para mantenimiento durante un período determinado (digamos, 3 años), probablemente sería más económico agregar otro servidor web al sistema que ejecuta la tecnología A para reducir la brecha de rendimiento.

Simplemente diciendo "debemos cambiar a la tecnología B porque la tecnología B es más rápida!" realmente no funciona.

Dado que Python es mucho menos omnipresente que PHP, no me sorprendería si hosting, desarrollador y otros costos de mantenimiento (a largo plazo) encajarían en este escenario.

2

Es casi lo mismo. La diferencia no debe ser lo suficientemente grande como para ser la razón para elegir una u otra. No intente compararlos escribiendo sus propios puntos de referencia pequeños ("hello world") porque probablemente no tenga resultados que sean representativos de un sitio web real que genere una página más compleja.

2

PHP y Python son lo suficientemente similares como para evitar cualquier tipo de cambio.

Cualquier mejora en el rendimiento que pueda obtener cambiando de un idioma a otro sería superada en gran medida simplemente gastando el dinero en convertir el código (no codifica gratis ¿verdad?) Y simplemente compre más hardware.

28

No tiene sentido tratar de convencer a su empleador a portar de PHP a Python, especialmente no para un sistema existente, que es lo que creo que implicó en su pregunta.

La razón de esto es que ya tiene un (presumiblemente) sistema de trabajo, con una inversión de tiempo y esfuerzo (y experiencia) existente. Descartar esto en favor de una ganancia de rendimiento trivial (no es que afirme que hubiera una) sería tonto, y ningún gerente que valga la pena debería respaldarlo.

También puede crear un problema con la capacidad de mantenimiento, dependiendo de quién más tiene que trabajar con el sistema, y ​​su experiencia con Python.

+1

Cualquier punto de referencia que he visto también muestra python con bajo rendimiento vs versiones más nuevas de PHP. Aunque todavía no he visto a nadie comparar el rendimiento en una aplicación completa. – mschuett

1

una organización de SI no consideraría esto a menos que la disponibilidad se estuviera convirtiendo en un problema.

si es así, busque en la replicación, equilibrio de carga y mucha memoria RAM.

0

Tuve que volver al desarrollo web en mi nuevo trabajo, y si no fuera por Pylons/Python, tal vez hubiera elegido vivir en la jungla :) En mi opinión subjetiva, PHP es para jardín de infantes, lo hice en mi tercer año de universidad y, creo, muchos ingenieros de software que se respetan a sí mismos (o sobreestimuladores) no querrán que les moleste el código PHP.

¿Por qué mis empleadores estuvieron de acuerdo? Nosotros (el equipo) acabamos de cambiar a Python, y no tenían mucho que decir. El sitio web aún es y será PHP, pero estamos desarrollando otras aplicaciones, incluida la web, en Python. Ventajas de los pilones? Puede integrar sus bibliotecas de Python en la aplicación web, y eso es, en mi opinión, una gran ventaja.

En cuanto al rendimiento, todavía estamos teniendo problemas.

+2

Prefiero pensar que clasificar un idioma completo como "kindergarten" es un poco fácil. Especialmente porque en realidad hay muchos ingenieros de software que se respetan que usan PHP para desarrollar aplicaciones web. Si me preguntas, cualquier desarrollador web que se precie debería apuntar a C# como el camino a seguir si quieres un "buen lenguaje", a diferencia de PHP o Python, los cuales son malos en OOP IMO. Python tiene su filosofía incluida en las baterías, pero ASP.NET tiene un marco muy decente y coherente subyacente. _ (Editar: Yo soy un desarrollador web de PHP, yo mismo, para agregar un poco de contexto.) _ – toon81

+3

@notageek "Puedes integrar tus bibliotecas de Python en la aplicación web, y eso es, en mi opinión, una gran ventaja." ¿Puede darme un ejemplo cuando uno NO PUEDE integrar sus propias bibliotecas en una aplicación PHP? – user151851

+0

Realmente puedes ir a ham con php; Creo que lo estás subestimando. Sin embargo, Python se ve mejor y en muchos sentidos es mucho más simple y para muchas tareas es mucho más fácil que php. – JVE999

4

Supongo que PHP (> 5.5) es más rápido y más confiable para aplicaciones web complejas porque está optimizado para la creación de scripts en sitios web.

Muchos de los puntos de referencia que encontrará en la red solo sirven para demostrar que el idioma preferido es mejor. Pero no puede comparar 2 idiomas con una tarea matemática ejecutando X veces. Para una verdadera referencia, necesita dos marcos comparables con cientos de clases/archivos y una aplicación web que ejecute 100 clientes a la vez.

Cuestiones relacionadas