Я использую бобовую оболочку для динамической оценки формул для создания таблиц Excel на основе данных базы данных.Логика реализована в банке, которую я могу запустить из командной строки и использовать ту же логику из службы в моем приложении Spring Boot.При запуске в Springboot по сравнению с автономным jar, производительность значительно снижается - в некоторых случаях, согласно данным профилировщика, для оценки EWShell требуется в 5 раз больше времени.
Я попытался заменить beanshell на Groovy, и если я кеширую скомпилированные скрипты, скорость будет одинаковой в Spring Boot или автономном jar, но, к сожалению, значительно медленнее, чем при использовании beanshell.Загрузчик классов действительно имеет гораздо больше записей, но я сомневаюсь, что это может привести к такому снижению производительности, поскольку в сценариях нет операторов включения.
Я бы, кроме звонков на interpreter.eval(<script>)
, выполнил одно и то же в обоих случаях.Кто-нибудь имеет какие-либо идеи, что может привести к этому огромному удару производительности?В настоящее время я был вынужден запустить jar как внешний процесс с переданными параметрами - что не должно быть необходимым и добавляет так много возможностей для ошибок