Ho usato Rhino per un componente di script all'interno della grafica. Nel progetto ci sono circa 200 piccoli script in esecuzione indipendente. Immediatamente all'avvio dell'applicazione gli script dovrebbero essere a piena velocità. Le prestazioni di Rhino erano sufficienti, ma dal momento che Oracle consiglia di migrare a Nashorn, sono di fronte a un dilemma.Si può superare la lentezza della partenza di Nashorn?
Sotto un'immagine che mostra la differenza di carico tra Rhino e Nashorn in circa 15.000 invocazioni degli script. La lentezza di avvio di Nashorn è il mio più grande problema.
Nota, questo era di nuovo su JDK 1.8.0. JDK 1.8u5 è simile
Spero che il quadro è chiaro.
Questa è una descrizione di come uso lo ScriptEngine:
- sto usando uno script esempio motore,
- creo un oggetto CompiledScript per ogni script,
- Uno SwingWorker esegue un CompiledScript .eval() una volta.
- Ogni mezzo secondo vengono avviati SwingWorkers.
- Ogni CompiledScript ha una propria istanza SimpleScriptContext che viene riutilizzata per ogni esecuzione.
Di seguito ho inserito un profilo di esecuzione di come occupato il motore è nel tempo;
Qualcuno sa come superare la lentezza di avvio di Nashorn?
AGGIORNAMENTO 15 APRILE '15
Ran lo stesso test con 200 script separati su Java8u45.
Le prestazioni sono decisamente migliori! Funziona allo stesso modo veloce di Rhino su Java7.
Rhino sotto Java 1.8 potrebbe rivelarsi. –
Grazie, sarebbe la mia ultima speranza. A proposito, ho letto [qui] (https://wiki.openjdk.java.net/display/Nashorn/Using+Rhino+JSR-223+engine+with+JDK8) che avrei avuto bisogno di un jar creato manualmente. Qualche idea sul perché, o sarebbe solo per scoraggiamento? – Houtman
Ho letto: "Se invece vuoi ottenere un binario pre-compilato, puoi scaricare da qui:" - quindi nessun problema. È compilato in non Java 1.8 - quindi cosa. –