Ich habe Rhino für eine Scripting-Komponente in Grafiken verwendet. Im Projekt laufen ca. 200 kleine Skripte unabhängig voneinander. Sofort nach dem Start der Anwendung sollten die Skripte auf Hochtouren laufen. Rhinos Leistung war ausreichend, aber da Oracle rät, nach Nashorn zu migrieren, stehe ich vor einem Dilemma.Kann Nashorn Startup Langsamkeit überwunden werden?
Unten ein Bild, das den Lastunterschied zwischen Rhino und Nashorn bei ungefähr 15.000 Aufrufen der Skripts zeigt. Die Startup-Langsamkeit von Nashorn ist mein größtes Problem.
Hinweis, dies war wieder auf JDK 1.8.0. JDK 1.8u5 ist ähnlich
Ich hoffe, dass das Bild klar ist.
Dies ist eine übersicht der Güter, wie ich die Scriptengine verwenden:
- ich eine Scripting Engine-Instanz bin mit,
- i für jedes Skript ein CompiledScript Objekt zu erstellen,
- A Swingworker führt eine CompiledScript .eval() einmal.
- Jede halbe Sekunde werden die SwingWorker gestartet.
- Jedes CompiledScript verfügt über eine eigene SimpleScriptContext-Instanz, die für jede Ausführung wiederverwendet wird.
Im Folgenden habe ich ein Laufzeitprofil aufgenommen, wie beschäftigt der Motor im Laufe der Zeit ist;
Wer weiß, wie die Start Langsamkeit von Nashorn zu überwinden?
UPDATE 15. April '15
Ran den gleichen Test mit 200 separater Skripte auf Java8u45.
Leistung ist viel besser! Läuft ähnlich schnell wie Rhino auf Java7.
Rhino unter Java 1.8 könnte aufschlussreich sein. –
Danke, das wäre meine letzte Hoffnung. By the way, ich lese [hier] (https://wiki.openjdk.java.net/display/Nashorn/Using+Rhino+JSR-223+engine+mit+JDK8), dass ich ein manuell gebautes Glas benötigen würde. Irgendeine Idee warum oder wäre es nur zur Entmutigung? – Houtman
Ich lese: "Wenn Sie stattdessen eine vordefinierte Binärdatei erhalten möchten, können Sie von hier herunterladen:" - also kein Problem. Es ist nicht in Java 1.8 kompiliert - na und? –