2010-08-11 28 views
13

Tengo un proyecto de aplicación web donde las actuaciones cuentan más que cualquier otra cosa, y tengo la opción de utilizar las tecnologías .lenguaje de programación de scripting más rápido?

Los puntos de referencia de tiroteos de lenguaje que no están realmente relacionados con a aplicaciones web.

¿Qué recomendarías como los mejores candidatos adecuados?

Gracias!


Un amigo sugirió el servidor gwan en el IRC. Parece ser lo que estaba buscando , pero nunca había oído hablar de él. ¿Alguien con experiencia previa en este paquete? Facilidad de uso, confiabilidad?

Antes de que deje de Apache, me gustaría conocer sus pensamientos.

+1

¿Está hablando específicamente de la programación del lado del servidor? –

+7

Usa el lenguaje de scripting de tu servidor favorito en las áreas normales y haz las cosas críticas de rendimiento en C y llámalo desde tu script. – Amarghosh

+2

no solo es subjetivo sino que también tiene varios duplicados en SO, por favor use search. Ah, y especifique sus requisitos más claramente si quiere respuestas claras. – SpliFF

Respuesta

3

Comience por identificar si el rendimiento de su aplicación realmente depende del idioma o de algún otro factor (como solicitudes de bases de datos, por ejemplo). La capacidad de los resultados de la caché también puede ser un factor muy importante.

Para el rendimiento, el lenguaje utilizado viene bastante lejos en la lista de puntos importantes para comprobar y el caso de uso también influye en qué idioma es mejor. Por ejemplo, si tiene muchas expresiones regulares para verificar, debe verificar el soporte de expresiones regulares en el idioma del candidato, etc.

Para el procesamiento de imágenes, el punto más importante probablemente sea la biblioteca de imágenes subyacente que utiliza, generalmente escrito en C. Tengo el caso de ImageMagick en mente, porque actualmente lo estoy usando. Está disponible como biblioteca para la mayoría de los idiomas y la capa de lenguaje de scripting solo es necesaria para llamar a las funciones de la biblioteca y el lenguaje utilizado en ese nivel no cambiará mucho (pero las imágenes de resultados precalculadas de caché pueden cambiar el rendimiento por un amplio margen). Este caso de uso probablemente sería similar para llamar a una lib criptográfica.

Si el rendimiento es realmente un problema tal, para el procesamiento de imágenes también se puede considerar el uso de una librería que funciona con tarjetas aceleradoras de la GPU (libs con soporte CUDA o openGPU).

+0

Gracias, pero ImageMagick (un paquete muy rico en funciones) es demasiado grande y no tan rápido. – Michi

+2

@Michi: No estoy sugiriendo usarlo, solo que la mayoría de las librerías deberían tener capas delgadas para acceder a ellas desde los lenguajes de scripting, encontrar la lib que necesita, verificar que la capa esté disponible. Espero que no espere obtener un mejor rendimiento del código de manipulación de imágenes escrito utilizando algún lenguaje de scripting. – kriss

+0

Según mi experiencia, realmente depende de quién haya escrito el código: Veo un código C atroz en todas partes, lo que hace que otros idiomas hagan afirmaciones ridículas. – Gil

2

Bueno, si se utiliza una base de datos con un gran volumen de datos que va a pasar más tiempo allí que la ejecución de un PHP o ASP o (Insertar otros sabores aquí) Escritura
Si puede usted debe construir una maqueta de su aplicación (o al menos un segmento de las partes más intensivas de la base de datos o del procesador) e intente hacer una comparación de esos

+0

Gracias por la respuesta. De hecho, la base de datos no está involucrada, solo el procesamiento de imágenes y otras tareas intensivas de la CPU como el cifrado. – Michi

+0

Luego compararía las funciones de construcción del lenguaje con las de la línea de comandos, una a la vez y en lotes ...

Para el procesamiento masivo de imágenes en paralelo, por lo general tengo un pequeño script de procesamiento que hace todo trabajo y un administrador de procesos que establece algunos límites en el uso de cpu/ram y engendra/pausa/detiene los procesos para que siempre funcionen a la carga deseada con un margen de error del 5%.

Para cortar y md5-ing archivos utilizo un script similar y ambos pueden ejecutarse al mismo tiempo y dejar suficiente potencia para que apache funcione tan rápido como es normal. –

+0

Incluso los trabajos de bases de datos pueden ser acelerados por un servidor de aplicaciones que actúa como un caché. – Gil

7

Si el rendimiento cuenta más que cualquier otra cosa, no use un lenguaje de scripting. Especialmente porque tienes un control total sobre la pila de tecnología. Los lenguajes compilados funcionarán mejor para las operaciones intensivas de CPU.

+4

o escriba una biblioteca de extensión C (u otro lenguaje compilado) en algún lenguaje de scripting, para obtener lo mejor de dos mundos. – kriss

+0

Los scripts son un requisito porque el código fuente de la aplicación web debe estar constantemente disponible por motivos de seguridad (lo que permite a los supervisores comprobar que no se haya producido manipulación desde el interior ni desde el exterior). – Michi

+5

Michi, entonces, la velocidad no es la principal prioridad en realidad? Debería poder validar más o menos los ejecutables usando un MD5-hash o algo similar, lo que le permitiría a sus supervisores verificar que no hubo manipulación. – Rob

-1

recomiendo el lenguaje de programación Java; no es un lenguaje de scripting, pero es probablemente el lenguaje de programación más rápido que se puede usar para programar aplicaciones web. También recomiendo usar un framework como Spring para una mejor experiencia de programación (versus programación Java Servlet "en bruto").

+0

Hmm ... mis primeras pruebas (crudas) muestran que Java es más rápido que C#, pero más lento que PHP por lo que trato de hacer. – Michi

+1

Java es más rápido en algunos dominios problemáticos, algunas funciones, algunas configuraciones pero más lentas en otras. Depende del sabor java y los emparejamientos de hardware, también. Para todos los efectos, java y asp.net están en el mismo orden de magnitud de velocidad, PHP es definitivamente en un orden de magnitud más lento (aunque los experimentos con la compilación de lenguajes de scripting están teniendo resultados prometedores). – marr75

+0

Generalmente, Java es lo suficientemente rápido para la mayoría de las tareas. No es más lento que PHP para cualquier tarea que conozco, sin embargo, es posible que las extensiones de PHP (escritas en C) puedan ser más rápidas para algunas tareas. – StaxMan

3

Javascript se analiza y optimiza constantemente para su uso en dispositivos móviles, por lo que en los servidores reales de tamaño completo se ejecuta MUY rápido. Echa un vistazo al nodo.JS, un proyecto para la implementación del lado del servidor JavaScript para servir páginas web: http://nodejs.org/

+1

Node.js es rápido solo en artículos de PR: http://gwan.ch/blog/20121027.html – Gil

6

G-WAN es un servidor web ordenada: se basa en el concepto de "C guiones":

guión de CA es simplemente C código fuente que es compilado por el servidor web y luego cargado en la memoria protegida. Será llamado por el servidor web cuando se realice una solicitud al servlet. El servlet, como está compilado por un compilador de C, es "tan rápido" como normalmente compila un programa C. Sin embargo, la ventaja de los scripts C para, por ejemplo, CGI o FastCGI, es que el programa compilado está en el mismo espacio de memoria que el servidor web. Esto reduce la sobrecarga de la comunicación (ya sea creando un proceso, en el caso de CGI, para cada solicitud, o el socket para FastCGI).

El servidor web está utilizando la técnica select/poll: E/S sin bloqueo. Sin embargo, hay algo bueno en eso. Cada programa puede escribirse como si estuviera usando E/S de bloqueo. Como el servidor web en sí compila cada script C, puede transformar el programa para usar E/S sin bloqueo. A partir de esto, puede vincularse a bibliotecas de terceros (como el acceso a la base de datos) y seguir utilizando la naturaleza de E/S sin bloqueo: sin cambio de contexto de proceso/subproceso.

Las herramientas provistas para programar los scripts C son, por ejemplo, el almacenamiento en memoria caché y los búferes seguros. La próxima versión (aún no publicada al momento de escribir esta publicación) también incluirá una tienda de Key-Value.

Rendimiento: existen algunos puntos de referencia disponibles que muestran que está superando a cualquier otro servidor web, sin embargo, no confío en estos. Intenta escribir un pequeño programa intensivo de CPU en C y, por ejemplo, en PHP. Deje que el script C se ejecute en G-WAN y el script PHP en Apache, y realice un benchmark usted mismo.

Hay mucho más, pero eso está fuera del alcance de esta pregunta.

Algunos inconvenientes de G-WAN es que está desarrollado por una sola persona. Sin embargo, hay un foro donde puedes hacer preguntas.

La facilidad de uso está limitada por su habilidad en C. La API que se proporciona, sin embargo, es simple. Todavía tiene algunas inconsistencias y (en mi opinión) partes feas, pero eso no es un problema. Un problema más serio es que no se garantiza que cada versión sea compatible con versiones anteriores y es posible que tenga que volver a escribir.

Si desea estar seguro: utilice la independencia de la plataforma de C: permita que su código se compile en programas (rápidos) CGI y también para ser utilizado por G-WAN. Si G-WAN falla, siempre puede recurrir al CGI (Rápido) de Apache (vea http://www.fastcgi.com/ para API).

+1

Existen puntos de referencia ** independientes ** que muestran los mismos resultados, por lo que su confianza tiene poco que ver con esos hechos: http: //www.rootusers.com/web-server-performance-benchmark/ aquí Apache, Nginx, Lighttpd, Varnish, Litespeed, Cherokee y G-WAN se prueban en 1/2/4/8 Núcleos de CPU – Gil

-1

Actualización: Parece que Java 7 utilizando NIO.2 ha logrado superar a Gwan con C pero casi 2 veces con el tiempo, es increíble, pero puede hacer algunas pruebas simples.

El único inconveniente de Java no es capaz de integrar las bibliotecas compartidas construidas sobre C. Estoy listo para desafiar a alguien para demostrar que estoy equivocado que Java NIO.2 es más lento que C

+1

seguro de que es capaz de llame a las bibliotecas c oído hablar de [JNA] (https://github.com/twall/jna) (o el más antiguo [JNI] (http://docs.oracle.com/javase/6/docs/technotes/guides/jni/ index.html)) – mata

+0

** Java NIO es mucho más lento que G-WAN + Java **: http://gwan.ch/blog/20120809.html#hello.java – Gil

1

LuaJit (LUA) se el lenguaje de programación más rápida con la tecnología JIT ..

si desea que el más rápido de aplicaciones web del lado del servidor (que no siempre script), que habría g-wan .. puede utilizar C, C++, java ..

ASP.NET también es lo suficientemente rápido para casi cualquier cosa, pero bastante caro

php con hiphop sería más fácil de aprender y también lo suficientemente rápido ..

que depende del número de solicitud Qué necesita .. y la rapidez con que se aprende el idioma ^^ no se olvide de caché de datos estáticos (utilizando Memcache o nosql)

-3

El lenguaje de script en ayunas es seguido ASP por PHP, pero si quieres aplicaciones que escalen a velocidades ilimitadas, usa C++ o Java. Google Search utiliza C++ Gmail utiliza Java YouTube = Python Twiiter solía utilizar Rubí ahora cambiaron a Java Facebook = PHP en el extremo frontal y un poco de java en el backend

pero recomiendo PHP en el extremo frontal y C++ en el back-end

+2

¿Podría proporcionar algunos puntos de referencia que respalden sus afirmaciones? ? En este momento no hay forma de verificar tus comentarios. –

+1

C#/Mono es más lento que PHP ... a menos que sea servido por G-WAN: vea http://gwan.ch/blog/20120923.html#loan.cs y http://gwan.ch/blog/20121021.html # hello.php – Gil

Cuestiones relacionadas