Медленно работает кэш jmix

jmix 2.7.1

Столкнулись с проблемой, что кэш в jmix работает медленно.
Прикрепляю демо проект. В нем выполняется 100000 запросов в базу.
Итоги наших замеров:

  1. Без кэша 31,1 сек
  2. С кэшом, когда искомой сущности нет 38,3 сек
  3. С кэшом, когда искомая сущность есть 54,8 сек
  4. С анотацией @Cacheable, когда искомой сущности нет 221 мс
  5. С анотацией @Cacheable, когда искомая сущность есть 315 мс
    Также прикрепляю снепшоты из VisualVM, числа в названиях файлов соответствуют пунктам выше. Нужный поток можно найти по Total Time (CPU).
    Как мы разобрались, основная часть времени уходит на парсинг каждого запроса, обработку параметров, и на создание prototype бинов при создании JmixEclipseLinkQuery. Т.е. происходит много работы ещё до того как дело доходит до кэша.

Шаги для воспроизведения

  1. Зайти в Application > Cached entities, нажать Test cache
  2. Раскомментировать eclipselink.cache.shared.CachedEntity=true в application.properties и @QueryHints(@QueryHint(name = PersistenceHints.CACHEABLE, value = “true”)) в CachedEntityRepository, нажать Test cache
  3. Создать сущность с названием “non-existent”, нажать Test cache
  4. Удалить сущность “non-existent” и раскомментировать @Cacheable(“testCache”) в CachedEntityService, нажать Test cache
  5. Создать сущность с названием “non-existent”, нажать Test cache

JmixCacheProblem.zip (184,3 КБ)