Comparativa de rendimiento PHP vs. ASP.NET
Joe Stagner ha publicado recientemente una comparativa de rendimiento de PHP versus ASP.NET, en diferentes sistemas operativos. En diferentes sistemas se entiende PHP claro :-P, ya que ASP.NET funciona en sólo en Windows y en Windows 😉
El tema de por si me ha resultado muy interesante, ya que estos benchmarks (si están bien echos) siempre arrojan un poco de luz acerca del rendimiento ‘real’ de diferentes lenguajes o tecnologías, y nos permiten tener algo tangible en que basar nuestras decisiones, no simples ‘leyendas urbanas’.
Pues bien, le he dado una lectura a dicha comparativa y pese a que Joe es un convencido desarrollador de PHP, los resultados me han dejado de piedra: Resulta que ASP.NET es más rápido que PHP! Ein? Como? Espera, espera… pero si siempre he oído que es al contrario!
A ver si ahora resultará que una de las mayores ventajas de PHP sobre ASP.NET no es tan cierta como creía… pues entonces que le queda? Ah! Si! El tema de la multiplataforma, aunque en el mismo artículo se señala que el acceso a ficheros con PHP sobre plataformas Windows y a MySQL adolecen de serios problemas de rendimiento. Entonces tal vez la facilidad de aprendizaje? Pues sinceramente, creo que (al menos para mí) es más fácil aprender ASP.NET que PHP, aunque esto supongo que depende de cada persona.
Personalmente tengo predilección por ASP.NET, pero considero a ambas tecnologías como fantásticas herramientas, y conozco a estupendos profesionales de ambos lados. Además, como todos sabemos la herramienta ayuda, y mucho, pero lo que realmente marca la diferéncia es la capacidad de las personas que la utilizan. Conozco grandes profesionales que con un palo y dos cañas te montan auténticas birguerías.
No se, la verdad es que me gustaría hacer la prueba por mi mismo. Alguien se anima a realizar alguno de estos tests y lo comprobamos?
Espero comentarios! 🙂
Artículo de Joe:
http://misfitgeek.com/blog/aspnet/php-linux-windows-asp-net-performance-ndash-redux/
Un saludo,
15 Responsesso far
Hola Luis, ahora mismo estoy involucrado en un desarrollo de PHP con .NET.
Brevemente: en un servidor se publica un servicio de WCF (web service) y se consume desde PHP.
No voy a hablar de rendimiento – ASP.NET bien tuneado va como un tiro – , sino de como trabaja PHP con web services …
Bien, lo primero decir que PHP no es compatible con los standares actuales de web service (en terminos de WCF wsHttpBinding), así que hay que renunciar a ciertas caracterisiticas avanzadas(otra vez en terminos de WCF solo se admite basicHttpBinding)
Pero ahora viene lo bueno … PHP incluye como NOVEDAD en su version 5 soporte EXPERIMENTAL para webservices! En versiones anteriores hay que usar una librería open source llamada nuSOAP – y con la que no hemos conseguido enviar tipos complejos como parametros.
En definitiva, un desastre. Tenia ganas de ver algo de PHP pero tras esta experiencia prefiero seguir con .NET y los experimientos hacerlo con Ruby on Rails o Java.
Saludos,
Pedro
Ahh! se me olvidaba, en PHP no se crean clases proxy para el acceso al web service, cada vez que PHP consume un web service – ya sea con el soporte NATIVO o con nuSOAP, se hace una peticion al wsdl y los esquemas asociados antes de hacer el POST.
Esto se traduce en que por cada llamada al web service, PHP hace cinco o seis llamadas adicionales para obtener el wsdl y xsd.
¡Esto es rendimiento!
Creo que se nota que estoy profundamente resentido con PHP …
@Pedro: Muy interesante tu punto de vista, desconocía por completo que PHP no crea el proxy (y esto está claro que afecta bastante al rendimiento). Gracias.
¿Que siempre habías leído que PHP era más rápido que ASP.NET? Eso es completamente falso y creo que no admite discursión: ASP.NET es mucho más rápido que PHP.
PHP es mucho más pesado que ASP.NET para determinadas cosas y no trae muchas de las mejoras que sí incorpora ASP.NET. Pero es que estás comparando peras con manzanas.
La única comparativa posible sería entre PHP y ASP (a secas sin el .NET). Esos sí que son formas de interpretar las tecnologías Web muy parecidas. Ambos son intérpretes de lenguajes de script que renderizan la página conforme la van interpretando.
Una página ASP.NET no se interpreta, se compila. La primera vez que invocas un aspx, se compila y la siguientes veces que accedas lo que estás haciendo es ejecutar código binario en un directorio caché de tu sistema. Con PHP la página se interpreta todas y cada una de las veces que ejecutes la página y estás haciendo eso: interpretar línea por línea el script de la página, cosa que con ASP.NET estás ejecutando el código binario.
Por otro lado, tal y como dicen PHP va mucho más por detrás en cuanto ASP.NET en cuando a funcionalidades.
Ahora bien. Imagina que tienes un entorno UNIX… ¿en qué desarrollarías tu aplicación Web? (y no me vale «pues cámbiate a Windows» como respuesta). PHP te da una muy buen resultado. Las aplicaciones que hagas en PHP son ejecutables tanto en UNIX/Linux como en Windows (tanto con apache como con IIS).
Ahora con Mono, las aplicaciones Web que hagas en ASP.NET son portables y puedes lanzarte a la aventura de hacer una aplicación ASP.NET para Unix/Linux, pero eso es de un par de años a esta parte.
Me parece bastante desacertado hacer una comparación de velocidad de lenguajes midiendo solo el tiempo que tardan operaciones muy simples. Algo más lógico sería hacer una comparación de la velocidad que tarda en procesar el requerimiento de una página con funcionalidad similar en ambos lenguajes y utilizando diferentes frameworks de desarrollo.
Si bien ASP.NET puede ser muy rápido en procesar instrucciones, también hace mucho trabajo para procesar un requerimiento, como puede ser el levantar todo el estado de una página en base al viewstate, el procesamiento del ciclo de vida de una página, el renderizado, etc. Si bien esto hace que se faciliten muchísimo las cosas a los programadores, también inciden negativamente en el rendimiento.
mmm como una referencia light, me parece bien; pero desp es cierto lo que comentan por aquí; hay muchos factores importantes a tener en cuenta. Y lo de pensar que PHP es más rápido, pues hace unos años esto era así, pero claro las aplicaciones estaban montadas en un HP-UX con 32 procesadores, y 64 GB de RAM, pedazo de máquina que en el mundo Windows era imposible de ver. Ahora con la llegada de un server como WS2008R2 e IIS7, el soporte para x64 y otras novedades, ASP.Net se convierte en una plataforma muy peromuy potente.
Gracias por el dato, me guardo el link 😀
Lo que comenta Pedro es muy cierto!!!! En mi empresa damos la posibilidad para consumir unos servicios web para una aplicación B2C – B2B. Y los clientes que utilizan PHP realmente tienen que hacer virguerías para consumir los servicios y en más de una ocasión lo han dado por imposible si el programador no tenía mucha experiencia.
No solo hay que tener en cuenta el rendimiento en las aplicaciones, la productividad es muy importante en los desarrollos ;-).
Saludos.
Como q asp.net no es multiplataforma y q pasa con MONO?
Exacto Hernan, Mono es un acercamiento al entorno multiplataforma, pero siempre tiene sus «peros». No obstante, es multiplataforma.
Respecto al tema PHP-ASP.NET, aquí va algo de humor que para eso es verano (me ha parecido una viñeta brutal):
http://dotnetslackers.com/Community/blogs/xun/DotNetPhpCartoon01_3.png
Estoy interesado en adoptar la solucion gratuita de .NET:
-Visual Web Developer Express 2008
-MONO
-MySql
Comentais que Mono tiene sus «peros», ¿podríais ser más concretos?
gracias!!
.NET es de Microsoft………………………
Creo que con eso no es necesario mas explicación…
Y qué con que sea de Micro$oft? En mi trabajo hay dos grupos de desarrollo, uno orientado a PHP con MySQL sobre Apache y otro con Asp.Net 3.5, WCF, IIS y Vs2008. Performance, Orden, Tiempos de Respuesta y Costos de Proyecto: .Net se lo lleva de encuentro.
Asp.net es mas rápido , lo que pasa es que a veces parece lo contrario cuando una aplicación en php corre en un servidor linux y una en asp.net esta llena de controles ( que es lo habitual) .
Asp.net RULES!!!!
Me parece muy bien, pero por favor corrige el «si están bien echos» por «si están bien hechos».
gracias.
Mi experiencia: Asp.net del lado del servidor bien programado, el website bien optimizado para mayor rendimiento y la UI con jquery: no hay con que darle. Alguien mas arriba habla del viewstate: es una propiedad totalmente opcional (aunque entra por defecto). Al trabajar del modo que describo, casi no utilizo viewstate y si tengo que utilizar, hay diversas tecnicas para reducir su tamaño o insertarlo al final del html…
buen debate!
saludos!