Ich habe Rhino für eine Skriptkomponente 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.
Unten ein Bild, das den Lastunterschied zwischen Rhino und Nashorn bei ungefähr 15.000 Aufrufen der Skripte zeigt. Die Startup-Langsamkeit von Nashorn ist mein größtes Problem.
Hinweis: Dies war wieder bei JDK 1.8.0. JDK 1.8u5 ist ähnlich
Ich hoffe, das Bild ist klar.
Dies ist ein Überblick darüber, wie ich die ScriptEngine verwende:
Im Folgenden habe ich ein Laufzeitprofil aufgenommen, wie beschäftigt die Engine im Laufe der Zeit ist;
Weiß jemand, wie man die anfängliche Langsamkeit von Nashorn überwinden kann?
UPDATE 15. April '15
Habe den gleichen Test mit 200 separaten Skripten auf Java8u45 durchgeführt.
Leistung ist viel besser! Läuft ähnlich schnell wie Rhino auf Java7.
In Java 1.8 können Sie Rhino über die API javax.script
verwenden, indem Sie diese Maven-Abhängigkeit verwenden und die Engine rhino
:
Startseite hier: Ссылка
Binärdateien: hier
Wenn Sie die neueste Version von Rhino möchten, können Sie sie überschreiben, indem Sie etwas wie folgt hinzufügen:
%Vor%Binärdateien: hier
Wenn Sie übrigens das neueste Rhino auf Java 1.7 über javax.script
verwenden möchten, sollten Sie den Engine-Namen rhino17R5
anfordern oder Sie erhalten zufällig eine Instanz des alten Rhino, das Teil der JRE ist. Der genaue Name der Engine hängt von der Version von rhino-script-engine
ab. Für 1.1.1 ist es rhino17R5
.
Tags und Links java java-8 performance rhino nashorn