Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想加快纳肖恩的评估_Javascript_Java_Nashorn - Fatal编程技术网

Javascript 我想加快纳肖恩的评估

Javascript 我想加快纳肖恩的评估,javascript,java,nashorn,Javascript,Java,Nashorn,我被允许跑向纳肖恩。 但有一个问题 eval(预编译)非常慢。大约需要3分钟。 我想快点行动 public class StrengthChecker { private static final String ZXCVBN_PATH = "/META-INF/resources/webjars/zxcvbn/1.0/zxcvbn.js"; private final ScriptEngine engine; public StrengthChecker() { Scr

我被允许跑向纳肖恩。 但有一个问题

eval(预编译)非常慢。大约需要3分钟。 我想快点行动

public class StrengthChecker {

  private static final String ZXCVBN_PATH = "/META-INF/resources/webjars/zxcvbn/1.0/zxcvbn.js";

  private final ScriptEngine engine;

  public StrengthChecker() {
    ScriptEngineManager manager = new ScriptEngineManager();
    engine = manager.getEngineByName("nashorn");

    Bindings engineScope = engine.getBindings(ScriptContext.ENGINE_SCOPE);
    engineScope.put("window", engineScope);

    try {

      // -------------------------------------------
      // Here is very slow definition of zxcvbn.js.
      // -------------------------------------------
      engine.eval(getResourceContents(ZXCVBN_PATH));

    } catch (ScriptException e) {
      throw new RuntimeException(e);
    }
  }

  public Strength check(String pw) {
    try {
      Map<String, Object> result;
      result = (Map<String, Object>) engine.eval("zxcvbn('" + pw + "');");

      return new Strength(
        ((Double) result.get("entropy")).intValue(),
        (int) result.get("score"),
        ((Double) result.get("crack_time")).intValue()
      );
    } catch (ScriptException e) {
      throw new RuntimeException(e);
    }
  }

}
public class-StrengthChecker{
私有静态最终字符串ZXCVBN_PATH=“/META-INF/resources/webjars/ZXCVBN/1.0/ZXCVBN.js”;
私人最终脚本引擎;
公共力量检查者(){
ScriptEngineManager管理器=新建ScriptEngineManager();
engine=manager.getEngineByName(“nashorn”);
Bindings engineScope=engine.getBindings(ScriptContext.engine\u作用域);
engineScope.put(“窗口”,engineScope);
试一试{
// -------------------------------------------
//这里是zxcvbn.js的非常慢的定义。
// -------------------------------------------
engine.eval(getResourceContents(zxcvn_路径));
}捕获(脚本异常){
抛出新的运行时异常(e);
}
}
公共强度检查(管柱pw){
试一试{
地图结果;
结果=(Map)engine.eval(“zxcvbn(“+pw+”);”);
重振雄风(
((双精度)result.get(“熵”).intValue(),
(int)结果获取(“分数”),
((双精度)result.get(“crack_time”)).intValue()
);
}捕获(脚本异常){
抛出新的运行时异常(e);
}
}
}

请告诉我们一些解决方案。

这是一个已知的性能错误,已修复,请参阅。它应该与Java 8u72一起发布,计划于2016年1月发布。上提供的Java 9预发布版本也包含修复程序(自JDK9 build b85起)。

因此,当您在浏览器中而不是在Nashorn中运行javascript代码时,它不会那么慢?当浏览器速度快时。当在Nashorn中运行时,它会更快。但是当你在Nashorn加载一个库(zxcvbn.js)时,它会很慢。谢谢你给了我一个好的答案。谢谢你的好意。