Я использовал Rhino для компонента сценариев внутри графики. В проекте имеется около 200 небольших скриптов, работающих независимо. Сразу же при запуске приложения сценарии должны быть на полной скорости. Производительность Rhino была достаточной, но, поскольку Oracle советует мигрировать в Нашорн, я сталкиваюсь с дилеммой.Можно преодолеть медлительность Nashorn?
Под рисунком, показывающим разность нагрузок между Rhino и Nashorn, приблизительно 15 000 вызовов скриптов. Медленность запуска Nashorn - моя самая большая проблема.
Обратите внимание, что это было на JDK 1.8.0. JDK 1.8u5 похож
Я надеюсь, что картина ясна.
Это схема того, как я использую в ScriptEngine:
- Я использую один скриптовый экземпляр двигателя,
- я создать объект CompiledScript для каждого сценария,
- SwingWorker выполняет CompiledScript .eval() один раз.
- Каждые полторы секунды запускаются SwingWorkers.
- Каждый CompiledScript имеет свой собственный экземпляр SimpleScriptContext, который используется повторно для каждого выполнения.
Ниже я включил профиль времени работы, как занят двигатель со временем;
Кто-нибудь знает, как преодолеть пусковую медлительность Нашорна?
UPDATE 15 апреля '15
Запустил тот же тест с 200 отдельными скриптами на Java8u45.
Производительность намного лучше! Работает так же быстро, как Rhino на Java7.
Rhino под Java 1.8 может быть раскрывающим. –
Спасибо, это была бы моя последняя надежда. Кстати, я прочитал [здесь] (https://wiki.openjdk.java.net/display/Nashorn/Using+Rhino+JSR-223+engine+with+JDK8), что мне понадобится встроенная в банку. Любая идея, почему, или это было бы просто для разочарования? – Houtman
Я читал: «Если вы хотите получить предварительно построенный бинарный файл, вы можете скачать здесь:« - так что проблем нет. Он скомпилирован не в Java 1.8 - так что. –