Se volete vedere come i vari nel browser motori JavaScript stack up, installare Safari 4 (sì, funziona su Windows ormai troppo!), Chrome V8, Firefox 3.5 e IE 8 (se siete su Windows) ed eseguire il benchmark:
http://www2.webkit.org/perf/sunspider-0.9/sunspider.html
credo, come ha detto a punta sopra, la il nuovo Firefox 3.5 utilizza TraceMonkey che compila anche per l'intermediazione del codice al volo usando alcuni f orm di JIT. Quindi dovrebbe comparare a V8 in qualche modo favorevolmente. Almeno non sarà 10 volte più lento del V8 come lo era Firefox 3 SpiderMonkey (senza JIT).
Per me ... Safari 4.0.3 era 2.5 volte più veloce di Tracemonky in Firefox 3.5.3 su Win XP. IE8 era molto più lento. Al momento non ho installato Chrome.
Non conosco la compilazione di Rhino in codice byte java. Se sta ancora interpretando le caratteristiche dinamiche di Javascript come essere in grado di aggiungere attributi alle istanze dell'oggetto in fase di esecuzione (ad esempio obj.someNewAttribute = "someValue" che è consentito in Javascript) ...Non sono così sicuro che sia interamente "compilato" in bytecode, e potresti non ottenere prestazioni migliori se non che non devi compilare dal testo del codice sorgente di Javascript ogni volta che viene eseguito il tuo Javascript. Ricorda che Javascript consente la sintassi molto dinamica come eval ("x = 10; y = 20; z = x * y"); il che significa che puoi creare stringhe di codice che vengono compilate in fase di runtime. Ecco perché penserei che Rhino sia interpretato/compilato in modalità mista anche se hai compilato il bytecode JVM.
JVM è ancora un interprete, anche se molto buono con supporto JIT. Quindi mi piace pensare a Rhino-on-JVM come a 2 livelli interprete (interprete-interprete) o interprete^2. Mentre la maggior parte dei tuoi altri motori Javascript sono scritti in C, e come tale dovrebbe essere più simile all'interprete^1. Ogni livello di interprete può aggiungere un degrado delle prestazioni di 5-10 volte rispetto a C o C++ (ad esempio Perl o Python o Ruby), ma con JIT la performance può essere molto inferiore nell'ordine di 2-4x. E la JVM ha uno dei più robusti motori JIT & di sempre.
Quindi il tuo chilometraggio varierà sicuramente e probabilmente trarrai vantaggio da alcuni benchmark importanti se desideri una risposta reale per l'applicazione desiderata sul tuo hardware operativo &.
Rhino non può essere troppo terribilmente lento, dal momento che so che molti lo usano. Penso che l'attrattiva principale non sia la sua velocità, ma il fatto che sia facile da codificare/leggero/integrabile/interprete che ha accesso alle librerie Java, il che lo rende perfetto per lo scripting/configurazione/estensibilità del tuo progetto software. Alcuni editor di testo come UltraEdit incorporano anche Javascript come motore di scripting macro alternativo. Ogni programmatore sembra essere in grado di incappare in javascript abbastanza facilmente, quindi è facile da imparare.
Un vantaggio di Rhino è che viene eseguito praticamente ovunque venga eseguita la JVM. Nella mia esperienza, provare a ottenere TraceMonkey o SpiderMonkey stand-alone per creare & eseguire dalla riga di comando può essere un po 'doloroso su sistemi come Windows. E l'incorporamento nella tua applicazione può richiedere ancora più tempo. Ma il risarcimento per avere un linguaggio embeddabile varrebbe la pena per un grande progetto, rispetto alla necessità di dover eseguire il rollover della propria mini soluzione di scripting se è quello che stai cercando di fare.
Script con Rhino è davvero facile se si dispone di Java e del vaso di rhino, basta scrivere il javascript ed eseguirlo dalla riga di comando. Lo uso sempre per compiti semplici.
Rhino può compilare il codice byte Java. https://developer.mozilla.org/en/Rhino_JavaScript_Compiler – Thilo