2012-02-12 9 views
19

La mia comprensione della tecnologia è che è compilato al volo in assemblea. Nello spettro di velocità è più lento di Java ma più veloce di Ruby e Python. Sul lato client un interprete ha senso, ma sul lato server il mio primo pensiero è che la compilazione prima dell'esecuzione, o almeno la possibilità di farlo, è un'architettura ottimale. Se il codice JavaScript fosse precompilato in questo modo, sarebbe più veloce di Java? O ha qualcosa a che fare con linguaggi debolmente tipizzati, il che significa che JavaScript sarà sempre più lento di Java?Perché non è stato compilato Node.js prima del runtime?

+0

questo sarà rispondere alla tua domanda: http://java.dzone.com/articles/what-javascript-equivalent – alfasin

+2

moderni interpreti JavaScript non è realmente interpreti ma compilatori adattivi. Ma i linguaggi dinamici di solito sono più lenti da eseguire (a causa del controllo dei tipi) rispetto ai linguaggi statici, quindi probabilmente non sarà veloce quanto Java. –

+2

Avere una digitazione statica (o una "tipizzazione forte" se ti fa sentire bene) è un fattore che dà a alcune lingue un miglioramento delle prestazioni, ma è ben lungi dall'essere l'unico fattore. Quello che sto dicendo è che non è possibile tradurre necessariamente le prestazioni in specifici benchmark in una scelta tecnologica di alto livello. Ad esempio, uso regolarmente Grails (JVM) e Express (node.js). Sarei fortunato se Grails inizia tra meno di 10 secondi, ma Express, che mi offre funzionalità comparabili, inizia in millisecondi. –

risposta

21

Alcuni di Node.js sono C++ ed è precompilato. La mia comprensione però è che c'è stato uno sforzo per mantenerne il più possibile in Javascript, ma dove le prestazioni erano scadenti, veniva usato il C++.

Node.js non sarebbe possibile senza il V8 JavaScript Engine, che è ciò che compila il javascript. Questo motore è noto per essere estremamente veloce. È stato creato per il browser Chrome, ma anche le prestazioni si ripagano in Node.js.

Per quanto riguarda le prestazioni di Node.js, come server Web è almeno alla pari degli altri server Web principali come Apache + PHP. Quindi le prestazioni non sono un problema nel caso di uso comune. Detto questo, ci sono tecnologie più veloci. I server basati su Erlang sono noti per essere più veloci sotto carichi concorrenti (interessante, Erlang è anche un linguaggio tipizzato dinamicamente).

Per le attività intensive di cpu/gpu di numero puro, Node.js non è una buona scelta, a meno che non venga temperato con Fabric Engine, nel qual caso può essere alla pari con C++.

ci sono un paio di progetti che sono attualmente esplorando problemi di velocità con JavaScript:

Problemi correlati