2010-11-18 12 views
5

Según language benchmarks, JavaScript V8 es más rápido que otros lenguajes de programación en el programa regex-dna. Entonces, ¿por qué las aplicaciones node.js (es decir, el servidor http) no son más rápidas que las aplicaciones C (es decir, Nginx, Lighttpd)?Motor V8 compila JavaScript para código de máquina. Entonces, ¿por qué node.js no es más rápido que C?

+3

¿Por qué sería más rápido? – jcolebrand

+0

¿Por qué apache es más rápido que lighttpd, ambos están programados en C? – AndreKR

+0

Ahora _that_ es una pregunta diferente @AndreKR – jcolebrand

Respuesta

32

Porque las aplicaciones V8 son aplicaciones de JavaScript. Incluso si el javascript finalmente se compila en código máquina, las características de tiempo de ejecución son diferentes.

Por ejemplo, si llama a una función en un objeto y ese objeto no define la función, el tiempo de ejecución debe ubicar la función atravesando la jerarquía de prototipos, esta jerarquía puede cambiar en cualquier momento durante la vida útil de un programa. Hay optimizaciones inteligentes que se pueden hacer, pero la sobrecarga existe sin embargo.

También está el modelo de memoria. Javascript es basura recolectada y GC toma ciclos de CPU.

+7

+1 para una respuesta seria –

11

Porque servir solicitudes HTTP es un problema diferente al de regex-dna.

El hecho de que A sea más rápido que B en una tarea no dice nada sobre qué esperar de otra tarea.

analogía del coche malo obligatoria: Un sándwich de jamón es mucho más sabroso que un porsche. ¿Por qué no es más rápido de 0-60?

+8

Corolario: puedo escribir código de mierda en cualquier idioma. – jcolebrand

+0

@drachenstern: yup. –

+0

+1 para la analogía del coche malo. –

3

Para una C es esencialmente el lenguaje de referencia para la velocidad de cálculo. Los cumplidores en estos días son muy buenos y producen códigos de máquina muy eficientes. Lo que esto significa es que el límite superior de rendimiento es lo que puede obtener con C.

En una de sus presentaciones sobre node.js Ryan Dahl (el creador) said ese nodo es aproximadamente tan rápido como C. (pero GC y otras cosas tienen un impacto en el rendimiento, por no mencionar que V8 necesita tiempo para optimizar adecuadamente las cosas)

-5

Según language benchmarks, JavaScript V8 es no más rápido que en el programa de GCC binarios-árboles.

Según los puntos de referencia del lenguaje, JavaScript V8 es no más rápido que GCC en el programa k-nucleótido.

Según los puntos de referencia del lenguaje, JavaScript V8 es no más rápido que GCC en el programa n-body.

Según los puntos de referencia del lenguaje, JavaScript V8 es no más rápido que GCC en el programa de norma espectral.

Según los puntos de referencia del lenguaje, JavaScript V8 es no más rápido que GCC en el programa fasta.

Según los puntos de referencia del lenguaje, JavaScript V8 es no más rápido que GCC en el programa de complemento inverso.

Según los puntos de referencia del lenguaje, JavaScript V8 es no más rápido que GCC en el programa pidigits.

+0

Sí, y le pregunté "¿por qué?" – Jeff

+0

@Polat Alemdar: preguntaste "Entonces, por qué las aplicaciones node.js (es decir, el servidor http) no son más rápidas que las aplicaciones C" y la respuesta es que no tienes motivos para pensar que deberían ser más rápidas que las aplicaciones C. Usted tomó una medición fuera de contexto e ignoró las otras 7. – igouy

0

En ese punto de referencia hay 15 programas diferentes y solo un punto de referencia dna-regex donde se puede ver JavaScript V8 es más rápido. En otros puntos de referencia, JavaScript tiene un rendimiento mucho menor.Puede elegir el programa en la primera selección, consulte this one.

Cuestiones relacionadas