Почему bean-оболочка eval в коде Java работает значительно медленнее при вызове в приложении Spring Boot? - PullRequest
0 голосов
/ 12 апреля 2019

Я использую бобовую оболочку для динамической оценки формул для создания таблиц Excel на основе данных базы данных.Логика реализована в банке, которую я могу запустить из командной строки и использовать ту же логику из службы в моем приложении Spring Boot.При запуске в Springboot по сравнению с автономным jar, производительность значительно снижается - в некоторых случаях, согласно данным профилировщика, для оценки EWShell требуется в 5 раз больше времени.

Я попытался заменить beanshell на Groovy, и если я кеширую скомпилированные скрипты, скорость будет одинаковой в Spring Boot или автономном jar, но, к сожалению, значительно медленнее, чем при использовании beanshell.Загрузчик классов действительно имеет гораздо больше записей, но я сомневаюсь, что это может привести к такому снижению производительности, поскольку в сценариях нет операторов включения.

Я бы, кроме звонков на interpreter.eval(<script>), выполнил одно и то же в обоих случаях.Кто-нибудь имеет какие-либо идеи, что может привести к этому огромному удару производительности?В настоящее время я был вынужден запустить jar как внешний процесс с переданными параметрами - что не должно быть необходимым и добавляет так много возможностей для ошибок

...