Добрый день,
После миграции проекта c cuba на jmix мы заметили замедление открытия табличных форм, в которых загружаются большое количество записей. Отладка показала, что при открытии большую часть времени занимает выполнение метода JpaLazyLoadingListener#processValueHolders
, в частности вызовы методов FetchPlans#builder(java.lang.Class<?>)
и ReflectionHelper.getFieldValue
.
Flame graph:
По оптимизации ReflectionHelper
в GitHub уже есть задача issue #1247.
Для оптимизации FetchPlans#builder мы заменили использование ObjectProvider
на factory class, что бы избежать вызова autowire для каждого создаваемого экземпляра FetchPlanBuilder
. Это решило проблему. Возможно такую оптимизацию стоит сделать и в коде платформы. Я могу создать PR в проекте GitHub, если вариант с factory class подойдет.