3

scala から groovy スクリプトを動的に実行していますが、Groovy Script Engine の loadScriptByName メソッドを呼び出すと、groovy スクリプトのコンパイルに時間がかかります。

アプリケーションからロードおよびコンパイルされた Groovy スクリプトのほとんどは、アプリケーションを最後に実行してから変更されていないため、毎回コンパイルする必要はないと思います。

コンパイル済みの groovy スクリプトを保存し、変更がない場合にアプリケーションから実行する方法はありますか? 同じ Groovy スクリプトで loadScriptBynName メソッドを 2 回以上呼び出すと、Groovy スクリプト エンジンがコンパイル済みスクリプトをキャッシュすることを知っていますが、アプリケーションを閉じるとそれらのキャッシュはなくなります。たぶん、キャッシュされたスクリプトをメモリに保存していますか?

4

1 に答える 1

3

使用する:

String script = ""     // some script
string scriptName = "" // unique script name

GroovyClassLoader groovyClassLoader = GroovyClassLoader() 
GroovyCodeSource gcs = new GroovyCodeSource(script, scriptName, "/app/script");
Class<?> executableClass = groovyClassLoader.parseClass(gcs, true);
于 2012-08-01T09:16:38.057 に答える