2016-07-13 1 views
1

同じスクリプトを2回評価することを避けるために、Nashornで評価されたスクリプトをキャッシュする方法はありますか?Nashornスクリプトキャッシング

たとえば、私は何かするjsライブラリを持っています。私は一度ライブラリを評価し、私が望むすべてのファイルにそれを再利用したいと思います。

public void modifyFile(String inputFile){ 
    scriptEngine = new ScriptEngineManager().getEngineByName("nashorn"); 
    bindings = scriptEngine.createBindings(); 
    scriptEngine.eval(new FileReader("css-lib.js"),bindings); 
    bindings.put(INPUT, readFile(inputFilePath, StandardCharsets.UTF_8)); 
    scriptEngine.getContext().setWriter(new StringWriter()); 
    executeScript(COMPRESS_SCRIPT_PATH, scriptEngine, bindings); 
} 

答えて

3

同じスクリプトで「eval」を2回実行すると、Nashornエンジンはそのスクリプトを2回実行します。しかし、2回評価することは、(バイトコードに)2回コンパイルすることを意味するものではありません。 Nashornは、コンパイルされた表現と再利用をキャッシュします。

関連する問題