Groovy: лучший / эффективный способ загрузки динамических скриптов - PullRequest
1 голос
/ 12 декабря 2008

Я реализую программу, которая использует 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 Ответ

2 голосов
/ 12 декабря 2008

Я смотрю на ту же проблему и имею следующее:

  • Создайте один GSE, который просматривает общий каталог («данные» в вашем примере)
  • Одиночный GSE контролирует и предварительно компилирует элементы в директории, так что это ускоряет работу (не уверен, но GSE, похоже, имеет некоторый материал staitc, который зависает между созданием экземпляра.

Если ваши скрипты не сильно меняются, то лучше всего их предварительно компилировать, а когда изменение зарегистрировано, перекомпилировать в это время.

Надеюсь, это поможет.

...