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?
Respuesta
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.
+1 para una respuesta seria –
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?
Corolario: puedo escribir código de mierda en cualquier idioma. – jcolebrand
@drachenstern: yup. –
+1 para la analogía del coche malo. –
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)
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.
Sí, y le pregunté "¿por qué?" – Jeff
@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
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.
- 1. ¿Por qué compila C# mucho más rápido que C++?
- 2. ¿Por qué compila este código C?
- 3. ¿Es posible hacer que Node.js use Rhino como el motor de Javascript?
- 4. ¿Por qué este código de ensamblaje es más rápido?
- 5. ¿C++/CLI es más rápido que C#
- 6. ¿Por qué no se compila este código de plantilla C++?
- 7. ¿Por qué String.IsNullOrEmpty es más rápido que String.Length?
- 8. Node.js y V8 de recolección de basura
- 9. ¿Por qué este código C# no se compila?
- 10. foldl es cola recursiva, entonces, ¿cómo es que foldr se ejecuta más rápido que foldl?
- 11. ¿Por qué file_get_contents es más rápido que memcache_get?
- 12. ¿Por qué no se compila Node.js antes del tiempo de ejecución?
- 13. ¿Por qué MSMQ es más rápido que WCF QueueService?
- 14. cuando es Java más rápido que C++ (o cuando JIT es más rápido que precompilado)?
- 15. ¿Por qué i = i + 1 es más rápido que i ++?
- 16. CLR de F # y C# es lo mismo que por qué F # es más rápido que C#
- 17. ¿El código es más rápido que el código en línea?
- 18. Node.js con V8 adecuado para dispositivos de memoria limitada?
- 19. ¿Es + = más rápido que - =?
- 20. ¿Qué compila para un código más rápido: "n * 3" o "n + (n * 2)"?
- 21. ¿Por qué no es más rápido usando colecciones paralelas?
- 22. Por qué Array.reverse_each es más rápido que Array.reverse.each
- 23. MongoDB no es más rápido que MySQL?
- 24. Por qué unir es más rápido que la concatenación normal
- 25. ¿Qué puede hacer que el código F # no optimizado sea más rápido que el código optimizado?
- 26. ¿Por qué es Select 1 más rápido que Select count (*)?
- 27. ¿Por qué \% (\) es más rápido que \ (\) en Vim?
- 28. ¿Cuál es más rápido y por qué?
- 29. ¿Por qué es === más rápido que == en PHP?
- 30. ¿Se podría compilar Python para ejecutar en el motor V8?
¿Por qué sería más rápido? – jcolebrand
¿Por qué apache es más rápido que lighttpd, ambos están programados en C? – AndreKR
Ahora _that_ es una pregunta diferente @AndreKR – jcolebrand