gpt4 book ai didi

java - Nashorn 启动慢可以克服吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:01:44 25 4
gpt4 key购买 nike

我使用 Rhino 作为图形内部的脚本组件。项目中大约有200个独立运行的小脚本。启动应用程序时,脚本应立即全速运行。 Rhino 的性能足够,但由于 Oracle 建议迁移到 Nashorn,我面临两难选择。

下图显示了 Rhino 和 Nashorn 在大约 15,000 次脚本调用时的负载差异。 Nashorn 启动慢是我最大的问题。

请注意,这是在 JDK 1.8.0 上返回的。 JDK 1.8u5 类似

Engine performance compared

希望图片清晰。

这是我如何使用 ScriptEngine 的概述:

  • 我正在使用一个脚本引擎实例,
  • 我为每个脚本创建一个 CompiledScript 对象,
  • Swingworker 执行 CompiledScript.eval() 一次。
  • SwingWorker 每半秒启动一次。
  • 每个 CompiledScript 都有自己的 SimpleScriptContext 实例,每次执行都会重复使用。

下面我包含了引擎随时间的繁忙程度的运行时配置文件; enter image description here

有谁知道如何克服Nashorn启动慢的问题?


2015 年 4 月 15 日更新
在 Java8u45 上使用 200 个单独的脚本运行相同的测试。
性能要好得多!在 Java7 上运行速度与 Rhino 相似。

最佳答案

在 Java 1.8 上,您可以通过 javax.script API 使用 Rhino,方法是使用此 Maven 依赖项并请求引擎 rhino:

    <dependency>
<groupId>de.christophkraemer</groupId>
<artifactId>rhino-script-engine</artifactId>
<version>1.1.1</version>
</dependency>

主页在这里:https://github.com/cevou/rhino-script-engine

二进制文件:here

如果你想要最新版本的 Rhino,你可以通过添加如下内容来覆盖它:

    <dependency>
<groupId>org.mozilla</groupId>
<artifactId>rhino</artifactId>
<version>${rhinoVersion}</version>
</dependency>

二进制文件:here

顺便说一下,如果你想通过 javax.script 在 Java 1.7 上使用最新的 Rhino,你应该请求引擎名称 rhino17R5 或者你可能会随机获取一个实例旧 Rhino 的一部分,它是 JRE 的一部分。所需的确切引擎名称取决于 rhino-script-engine 的版本。对于 1.1.1,它是 rhino17R5

关于java - Nashorn 启动慢可以克服吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25811112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com