2012-02-12 9 views
19

Mi comprensión de la tecnología es que se compila sobre la marcha en el montaje. En el espectro de velocidad, es más lento que Java pero más rápido que Ruby y Python. En el lado del cliente, un intérprete tiene sentido, pero en el lado del servidor mi primer pensamiento es que la compilación antes de ejecutar, o al menos tener la opción de hacerlo, es una arquitectura óptima. Si el JavaScript se pre compiló de esta manera, ¿se ejecutaría más rápido que Java? ¿O tiene algo que ver con los lenguajes débilmente tipados, lo que significa que JavaScript siempre será más lento que Java?¿Por qué no se compila Node.js antes del tiempo de ejecución?

+0

esto va a responder a su pregunta: http://java.dzone.com/articles/what-javascript-equivalent – alfasin

+2

intérpretes modernos de JavaScript no es realmente intérpretes, pero los compiladores de adaptación. Pero los lenguajes dinámicos generalmente son más lentos de ejecutar (debido a la verificación de tipos) que los lenguajes estáticos, por lo que probablemente no sea tan rápido como Java. –

+2

Tener tipado estático (o "tipado fuerte" si te hace sentir bien) es un factor que da a algunos idiomas una mejora en el rendimiento, pero está lejos del único factor. Lo que estoy diciendo es que no necesariamente se puede traducir el rendimiento en puntos de referencia específicos en una opción de tecnología de alto nivel. Por ejemplo, uso regularmente Grails (JVM) y Express (node.js). Tendría suerte si Grails comienza en menos de 10 segundos, pero Express, que me ofrece una funcionalidad comparable, comienza en milisegundos. –

Respuesta

21

Parte de Node.js es C++ y está precompilada. Sin embargo, tengo entendido que hubo un esfuerzo por mantener todo lo posible en Javascript, pero donde el rendimiento era pobre, entonces se usaba C++.

Node.js no sería posible sin el V8 JavaScript Engine, que es lo que compila el javascript. Este motor es conocido por ser extremadamente rápido. Fue creado para el navegador Chrome, pero el rendimiento también tiene su recompensa en Node.js.

En cuanto al rendimiento de Node.js, como servidor web es al menos a la par de los otros servidores web líderes como Apache + PHP. Entonces, el rendimiento no es un problema en el caso de uso común. Dicho esto, hay tecnologías más rápidas. Los servidores basados ​​en Erlang son conocidos por ser más rápidos bajo cargas concurrentes (curiosamente, Erlang también es un lenguaje tipado dinámicamente).

Para realizar tareas intensas de CPU/gpu con crujido de números, Node.js no es una buena opción, a menos que lo atempere con Fabric Engine, en cuyo caso puede estar a la par con C++.

Hay un par de proyectos que actualmente están explorando los problemas de velocidad con JavaScript:

Cuestiones relacionadas