Groovy:加载动态脚本的最佳/高效方式

时间:2008-12-12 08:07:35

标签: performance groovy

我正在实施一个程序,该程序利用Groovy作为脚本引擎,为用户提供了自动执行任务的可能性。因此,脚本必须按需加载,我用以下代码实现:

// short version, try/catch and error handling skipped
String[] roots = new String[] { "data" };
Binding binding = new Binding();
GroovyScriptEngine gse = new GroovyScriptEngine(roots);

binding.setVariable("control", this.getControl());
// .. several others

gse.run(scriptName, binding); // where scriptName is provided through user selection

我注意到第一次运行时整个程序段的执行时间在400到800毫秒之间,但是在笔记本电脑的后续运行中会下降到200到400之间。

在开始时,为每个事件初始化了一个新的GroovyScriptEngine,并在之后结束。与此同时,我为整个程序使用了一个GSE实例,尽管最初的问题尚未公开:

有没有办法预编译groovy脚本,即在启动GSE时? groovyc不是一个选项,因为那需要一个“外部”程序调用。

非常感谢!

1 个答案:

答案 0 :(得分:2)

我正在研究同样的问题,并有以下内容:

  • 创建一个查看共享目录的GSE(示例中的“数据”)
  • 单个GSE监视并预编译dir中的项目,这样可以加快速度(不确定但是GSE似乎有一些在创建实例之间挂起的staitc东西。

如果您的脚本没有太大变化,那么预编译它们是最好的方法,当时注册的更改会重新编译。

希望有所帮助。