我已经将 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 实例,每次执行都会重用该实例。
下面我包含了一个运行时配置文件,说明引擎随着时间的推移有多忙;
有谁知道如何克服 Nashorn 的启动缓慢?
2015年 4 月 15 日更新
在 Java8u45 上使用 200 个单独的脚本运行相同的测试。
性能要好很多!在 Java7 上运行速度与 Rhino 一样快。