Я работаю над оптимизацией производительности groovy кода. Я использовал jvisualvm для подключения к работающему приложению и сбора образцов ЦП. В примерах говорится, что org.codehaus.groovy.reflection.CachedMethod.inkove занимает больше всего процессорного времени. Я не вижу других способов применения в примерах.
Как правильно изучить CachedMethod.invoke и понять, какие строки кода действительно снижают производительность?
Спасибо.
UPD: я использую Indy, мне это не помогло.
Я не пытался представить @CompileStatic, так как хочу найти свои узкие места, прежде чем переписывать groovy на java.
Моя проблема немного похожа на эту тему: Вызвать кеширование сайта быстрее, чем invokedynamic?
У меня есть код, который динамически составляет скрипт groovy. Шаблон скрипта выглядит так:
def evaluateExpression(Map context){
def user = context.user
%s
}
где %s заменено на
user.attr1 == '1' || user.attr2 == '2' || user.attr3 = '3'
Существует набор (всего 20) замен, взятых из баз данных. Код получает замены из БД, создает GroovyScript и оценивает его. Я предполагаю, что узкое место находится в выполнении скрипта. Каков правильный способ исправить это?