2010-01-05 14 views
5

Según this page, parece que Perl, PHP, Python es 50 veces más lento que C/C++/Java.¿Qué lenguaje de programación se adapta al desarrollo de aplicaciones web críticas?

Por lo tanto, creo que Perl, PHP, Python no podría manejar la aplicación crítica (como> 100 millones de usuarios,> xx millón solicitar cada segundo) bien. Pero las excepciones existen, por ejemplo. facebook (se dice que Facebook está escrito con PHP por completo), wikipeida. Además, escuché que google usaba Python extensivamente.

¿Por qué? ¿Es el hardware más rápido el que llena la gran brecha de velocidad entre C/C++/Java y Perl/PHP/Python?

gracias.

+3

Paso 1. Determine los casos que le interesan. Paso 2. Diseñe sistemas para reunir números para esos casos en varios idiomas. Paso 3. Compare, elija un idioma e implemente. –

+3

se dice comúnmente que los grandes programadores pueden codificar grandes programas en un lenguaje repugnante, y un programador asqueroso puede codificar los programas de mierda en un gran lenguaje. Entonces, lo que más importa es cómo se codifica, la elección del lenguaje es secundaria. ;) – Lukman

+2

Si necesita elegir un lenguaje rápido para implementar un algoritmo conocido, los puntos de referencia de tiroteo significan algo. Si necesita elegir un idioma para escribir una aplicación de negocios, los puntos de referencia no significan sentadillas. El problema no es "qué idioma puede hacer X más rápido", porque no hay una X simple para "su negocio". El rendimiento y la solidez se reducen en gran medida a qué tan buenos son sus programadores, no el idioma. – Schwern

Respuesta

5

La página que estás enlazando sólo dice la verdad a medias. Por supuesto, los idiomas nativos son más rápidos que los dinámicos, pero esto es fundamental para las aplicaciones con altos requisitos informáticos. Para la mayoría de las aplicaciones web esto no es tan importante. Una solicitud web generalmente se sirve rápidamente. Es más importante contar con un marco eficiente, que administre los recursos de manera adecuada e inicie nuevos hilos para atender las solicitudes rápidamente. Además, el comportamiento de sincronización no es el único aspecto crítico. Las aplicaciones confiables y sin errores probablemente se logran mejor con lenguajes dinámicos.

Y no, el hardware más rápido no es una solución. De hecho, Google es famoso por usar un grupo de máquinas de bajo costo.

+0

El hardware más rápido es una solución; Google acaba de decidir que era más rentable usar hardware básico con amplias tolerancias de calor. –

+0

El hardware más rápido es una solución para hacer que una aplicación diseñada correctamente funcione más rápido y poder atender a más usuarios. No es una solución para hacer que una aplicación mal diseñada funcione mejor. – kgiannakakis

+1

kgiannakakis + Robert Grant ergo, Google es una aplicación mal diseñada –

2

no hay compilador JIT en php, que compila el código en código máquina

Otra de las razones es tipado dinámico de PHP. Un lenguaje de tipos dinámicos siempre va a ser más lento ..

clic a continuación y leer más

What makes PHP slower than Java or C#?

+0

¿por qué el voto abajo? – Hiyasat

+4

Al declinar, agregue un comentario explicando por qué votó negativamente, por lo que el usuario que respondió puede tener la oportunidad de corregirse y mejorar en el futuro. –

+0

La pregunta no es por qué un idioma es más lento que otro, la pregunta es cuál es mejor para el desarrollo web, por lo que es la respuesta a la pregunta incorrecta. Además, el OP está confundido de que el rendimiento crudo contribuye a un mejor lenguaje y esta respuesta simplemente alimenta eso. – Schwern

3

(como por ejemplo> 100 millones de usuarios,> xx millones de petición cada segundo)

para lograr ese tipo de actuación, que va a tener para diseñar e implementar el sitio web/aplicación como una sistema escalable de varios niveles con replicación en (probablemente) todos los niveles. En este punto, el hecho de que un lenguaje de programación sea más rápido/más lento que otro probablemente solo afecte la cantidad de máquinas que necesita en su granja de procesadores. El diseño de la arquitectura del sistema es mucho más significativo.

0

Google está usando Python para GAE y Windows Azure proporciona PHP. La arquitectura LAMP es ideal para escalar aplicaciones.

También creo que el lenguaje de programación no es tan importante en cuanto a rendimiento. Lo más importante es mirar la arquitectura de tu aplicación.

espero que ayude

0

Para servir una página web, es necesario que:

  1. Recibir y analizar la petición.
  2. Decida qué desea hacer con la solicitud.
  3. Lectura/escritura de datos persistentes (base de datos, caché, sistema de archivos)
  4. Salida de datos HTML.

La "velocidad" del idioma del lado del servidor solo se aplica a los pasos dos y cuatro. Dado que la mayoría de los scripts intentan mantener el paso 2 lo más corto posible, y que la mayoría de los lenguajes web (incluido PHP) optimizan el paso 4 tanto como pueden, en cualquier sitio web serio la mayor parte del tiempo de procesamiento de solicitudes se utilizará en el paso 3.

Y el tiempo dedicado al paso 3 es independiente del idioma del lado del servidor que usa ... a menos que implemente su propia base de datos y memoria caché distribuida.

7

El código de cómputo es la menor de mis preocupaciones en la mayoría de las aplicaciones web de uso intensivo.

Los cuellos de botella en una aplicación web típica la alta disponibilidad son (no nessecarility en este orden, pero lo más probable):

  1. base de datos (IO y CPU)
  2. archivo IO
  3. de banda de Red
  4. memoria en el servidor de aplicaciones
  5. Su Java/C++/PHP/código Python

Sus principales preocupaciones para que su aplicación escalable son:

  1. reducir el acceso a la base de datos (almacenamiento en caché, la agrupación en mente, quering inteligente)
  2. distribuir su aplicación (clustering)
  3. Eliminar bloqueos de sincronización inútiles entre hilos (ver commons-pool 1.3)
  4. crear los índices de base de datos correctos, el modelo de datos y la replicación de apoyo a muchos usuarios
  5. reducir el tamaño de sus respuestas, usando actualizaciones incrementales (Ajax)

Sólo después de todo lo anterior se implementan, optimizar el código

No dude en añadir más a la lista si me he perdido algo

1

C es fácilmente el idioma más rápido que hay. Es tan rápido que escribimos otros idiomas en él. Nadie escribe en serio sitios web en C. ¿Por qué? Es muy fácil meter la pata en C de forma muy difícil de detectar y no ayuda mucho. En resumen, come programadores y genera errores.

La construcción de una aplicación robusta y rápida no se trata de elegir el idioma más rápido, se trata de A) facilidad de mantenimiento y B) la escalabilidad.

Mantenibilidad significa que no tiene muchos errores. Significa que puede agregar nuevas funciones rápidamente y modificar las existentes. Desea un lenguaje que haga la mayor parte del trabajo posible para usted y no se interponga en el camino. Es por eso que cosas como Perl, Python, PHP y Ruby son tan populares. Todos fueron escritos con la conveniencia del programador en mente sobre el rendimiento bruto o la limpieza. C fue escrito para rendimiento crudo. Java fue escrito para la limpieza conceptual.

La escalabilidad significa que puede pasar de 10 usuarios a 10.000 usuarios sin volver a escribir todo. Eso solía significar que escribiste el código más estricto que puedes administrar, pero el código altamente optimizado suele ser difícil de mantener.Por lo general, significa hacer cosas en beneficio de la computadora, no del ser humano ni del negocio. Eso sacrifica la facilidad de mantenimiento y tienes que decirle a tu jefe que tomará 3 meses agregar una nueva función.

La escalabilidad en estos días se logra principalmente lanzando hardware y paralelizando. ¿Cuántos procesos y procesadores y máquinas puede cultivar su trabajo? Si puede lograr eso, puede simplemente encender otra computadora barata en la nube cuando la necesite. Por supuesto, va a querer optimizar algunos, pero a esta escala obtiene mucho más de la implementación de un algoritmo mejor que el endurecimiento de su código.

Por ejemplo, me tomó una aplicación PHP lento que estaba luchando para manejar 50 usuarios a la vez, cambiaron de Apache con mod_php a lighttpd con carga equilibrada, remotas FastCGI procesos que permitan a la paralelización con un mínimo de cambio de código. Algunos perfiles básicos revelaron que el marco PHP que usaron para prototipar era lento, por lo que se eliminó. El perfil también sugirió algunos índices para hacer que las consultas de la base de datos se ejecuten más rápido. El resultado final fue un sistema que podría manejar miles de usuarios y se podría agregar más capacidad según sea necesario dejando intacta la mayor parte del código que implementa la lógica de negocios. Tomó algunas semanas, y realmente no sé PHP bien.

Puede ser beneficioso volver a aplicar piezas pequeñas y afiladas en un lenguaje muy rápido, pero generalmente eso ya se ha hecho en forma de una biblioteca o herramienta optimizada. Por ejemplo, su servidor web. Para la complejidad y las necesidades siempre cambiantes de la lógica empresarial, lo importante es la facilidad de mantenimiento y lo buenos que son sus programadores.

Encontrará que la mayoría de la web está escrita en PHP, Perl y Python porque son fáciles de escribir, con bits pequeños y nítidos escritos en C, Java y elementos exóticos como Scala (por ejemplo, Twitter) . Wikia, por ejemplo, es un Mediawiki modificado que está escrito en PHP pero está funcionando (entre otras razones) haciendo un heroic amount of caching.

+0

"Es tan rápido que escribimos otros idiomas en él", eso tiene mucho más que ver con la expectativa de que sea cual sea el hardware existente, algún compilador de C admitirá ese hardware. – igouy

0

Para php, hay muchas cosas que puede hacer para aumentar el rendimiento. Por ejemplo

  • Php Accelerator
  • almacenamiento en caché de consultas
  • optimizar las consultas
  • El uso de un generador de perfiles para encontrar partes más lentas y optimizar

Estas cosas sin duda ayudaría a reducir la brecha entre los lenguajes de nivel inferior. Entonces, para responder a su pregunta, hay otras cosas que puede hacer dentro del código para optimizarlo y hacerlo correr más rápido

0

Estoy de acuerdo con luc. Es la arquitectura que realmente importa y no el lenguaje de programación.

Cuestiones relacionadas