¿Se puede superar la lentitud de inicio de Nashorn?

He usado Rhino para un componente de secuencias de comandos dentro de gráficos. En el proyecto hay alrededor de 200 pequeños scripts que se ejecutan de forma independiente. Inmediatamente al iniciar la aplicación, los scripts deben estar a toda velocidad. El rendimiento de Rhino fue suficiente, pero como Oracle aconseja migrar a Nashorn, me enfrento a un dilema.

Debajo de una imagen que muestra la diferencia de carga entre Rhino y Nashorn en aproximadamente 15,000 invocaciones de los guiones. La lentitud de inicio de Nashorn es mi mayor problema.

Tenga en cuenta que esto fue de vuelta en JDK 1.8.0. JDK 1.8u5 es similar

Rendimiento del motor comparado

Espero que la imagen sea clara.

Este es un resumen de cómo uso el ScriptEngine:

  • Estoy usando una instancia del motor de scripting,
  • creo un objeto CompiledScript para cada script,
  • Un Swingworker ejecuta un CompiledScript.eval () una vez.
  • Cada medio segundo se inician los SwingWorkers.
  • Cada CompiledScript tiene su propia instancia de SimpleScriptContext que se reutiliza para cada ejecución.

A continuación, incluí un perfil de tiempo de ejecución de cuán ocupado está el motor con el tiempo; ingrese la descripción de la imagen aquí

¿Alguien sabe cómo superar la lentitud de inicio de Nashorn?


ACTUALIZACIÓN 15 de abril de '15
Ejecuté la misma prueba con 200 scripts separados en Java8u45.
¡El rendimiento es mucho mejor! Se ejecuta de manera similar a Rhino en Java7.

Respuesta 1

Después de pasar por SO preguntas relacionadas con mi título, no pude encontrar una solución al problema. Estoy teniendo una NullPointerException en mapFragment.getMapAsync. A continuación se muestra mi código MapActivity. paquete ...

Soy nuevo en NetBeans y no puedo crear un proyecto de "Aplicación Java", como se muestra en todos los tutoriales. Solo puedo crear un proyecto de forma libre de Java, pero esto requiere un script de compilación, que no tengo ...

Tengo un servicio web fuera de mi empresa que no proporciona WSDL por su servicio. Proporcionan: un documento detallado sobre cómo PUBLICAR en su servicio cómo debería ser un SoapEnvelope e incluso ...

Esto es lo que sé hasta ahora (corríjame): en el cliente Java RabbitMQ, las operaciones en un canal lanzan IOException cuando hay una falla general de la red (datos malformados del corredor, ...