我正在实施一个程序,该程序利用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不是一个选项,因为那需要一个“外部”程序调用。
非常感谢!
答案 0 :(得分:2)
我正在研究同样的问题,并有以下内容:
如果您的脚本没有太大变化,那么预编译它们是最好的方法,当时注册的更改会重新编译。
希望有所帮助。