170 похожих чатов

Заметил одну особенность. Mapstruct очень замедляется при маппинге Page<Entity> в

Page<EntityDto>, когда вызываю .map(myMapper::toDto) над Page<Entity>. А вот для List почти без разницы во времени. Как-нибудь можно ускорить маппинг для Page?

25 ответов

41 просмотр

Для того чтобы ускорить, надо понять, что именно ускорять. Посмотри имплементацию маппера для Page<Entity>. Запусти профайлер и посмотри в каких местах идут просадки

ascjke- Автор вопроса
Vladislav Zhuravskiy
Для того чтобы ускорить, надо понять, что именно у...

В интерфейсе метода возвращающего Page<> и не описывал. Вот отрывок кода в контроллере return new ResponseEntity<>(SuccessResponse.builder() .data(itemService.getAllWithPagination(page, size) .map(item -> itemMapper.toDto(item, context))) .build(), HttpStatus.OK); Тут он проходит так же как и для List<Entity> по сути

ascjke
В интерфейсе метода возвращающего Page<> и не опис...

Почему ты решил что медленно выполняется. Это какие субъективные ощущения или есть конкретные цифры? Прогони этот метод через профайл

ascjke
В интерфейсе метода возвращающего Page<> и не опис...

Сравни профайл с листом и профайл с page

ascjke- Автор вопроса
Vladislav Zhuravskiy
Почему ты решил что медленно выполняется. Это каки...

время ответа в 3-4 раза медленее чем без маппинга. Профайл проверю, ок

ascjke- Автор вопроса
central hardware
а вариант с листом?

В интерфейсе описывал. @InheritInverseConfiguration D toDto(E entity, @Context CycleAvoidingMappingContext context); @InheritInverseConfiguration List<D> toDto(List<E> entity, @Context CycleAvoidingMappingContext context); itemMapper.toDto(item, context) -> D toDto(E entity вот этот метод вызывается

Как понял что замедляется?)

ascjke
В интерфейсе метода возвращающего Page<> и не опис...

так а аменно вот этот код но с листом вместо пейджа?

ascjke
время ответа в 3-4 раза медленее чем без маппинга....

Вангую в листе все поля проинициализированы, а в пейдже все лейзи не загружены

ascjke- Автор вопроса
Alexandr ∨∧‾ Emelyanov
Как понял что замедляется?)

без маппера Page из 10 объектов возвращает за 15-20 мс с маппером 48-55 мс

ascjke
без маппера Page из 10 объектов возвращает за 15-2...

ну так смапить ясен пень надо. ты говорил что с листом быстрее - там замерял?

ascjke- Автор вопроса

Возможно потомучто Page еще getTotalElements сериализуется а это +1 запрос каунта всех записей

ascjke- Автор вопроса
Alexandr ∨∧‾ Emelyanov
Вангую в листе все поля проинициализированы, а в п...

Хмм, в модели я прописал все нужные аннотации. Где то LAZY где то EAGET c BatchSize. Они ведь должны применяться и для List и для page? Hibernate 6.2.7

ascjke- Автор вопроса
Alexandr ∨∧‾ Emelyanov
в смысле без разницы?

когда возвращаю List<> findAll() из 100 объектов: с маппером 70-80 мс без маппера 60-65 мс

ascjke
без маппера Page из 10 объектов возвращает за 15-2...

я поставлю на то что в варианте с листом нету настоящей пагинации вот он и возращается быстрее

ascjke
Хмм, в модели я прописал все нужные аннотации. Где...

должны. но при этом на маппинге ты эти поля трогаешь и подтягиваешь прямо во время мапинга

ascjke- Автор вопроса
central hardware
я поставлю на то что в варианте с листом нету наст...

так я об этом и говорю. Что List<Entity> быстрее мапится чем Page<Entity> ))

ascjke
так я об этом и говорю. Что List<Entity> быстрее м...

ну тут не в маппинге дело, а в запросе на count

ascjke
когда возвращаю List<> findAll() из 100 объектов: ...

И сравнивай на одинаковом количестве. Если проверяешь на 10 элементах в page то и в лист вытаскивай 10 элементов

ascjke- Автор вопроса
Vladislav Zhuravskiy
И сравнивай на одинаковом количестве. Если проверя...

Что для List, что для Page из 100 элементов время одинаковое) Я хотел чтобы Page для 10 элементов за 15-20 мс отвечал😅

ascjke
Что для List, что для Page из 100 элементов время ...

Ну тогда надо убрать все что медленное и оставить только быстрое 😊

ascjke
Что для List, что для Page из 100 элементов время ...

разницы в 100 или 10 элементов не будет. понимаю между 10 и 10 000 000 000 - была бы разница чувствительная

Похожие вопросы

Обсуждают сегодня

Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
38
Проблема с Windows scripting control Множество объектов получают iDispatch обертки и отдаются в скрипты. При этом скрипты могут эти обертки держать живыми очень долго, наприм...
Arioch The
16
Я тут пытаюсь переработать архитектуру подсистемы памяти ядра во что-то осмысленное. Есть pmm, который создает набор range’ей(пока что только для ядра, потом для юзерспейса), ...
Evg Resh
9
Скажите, можно ли как-то "переместить" динамический массив из одной переменной в другую? Скажем, переместить из TList<> в TArray<>. Именно переместить, а не скопировать. Если ...
Eugene Krasnikov (ᴊɪɴ x)
37
комрады, че-та лыжы не едут var tmpFont: TFont; begin tmpFont:= TFont.Create; try case rgFontColor.ItemIndex of 0: tmpFont.Color:= clWindowText; 1: tmpFo...
Ed Doc
34
Вот еще криповенькая штука. uMain.pas(517,3) Warning: Case statement does not handle all possible cases И ЧО? 😂
Александр (Rouse_) Багель
20
Интересно, нет ли какого-то способа получить из dll не адрес самой метки, а адрес со смещением?
The Bird of Hermes
54
коллеги, а есть простой способ определить, что программу из под Delphi запускают?
Михаил
10
40 тысяч в час / 3600 = 11,11 в секунду... Вам точно нужна очередь? (я просто не знаю "контекста") Такое количество запросов любое приложение замечательно "прожует" и не попер...
Igor Mitin
5
М-да. Почему бы просто со stringlist не работать?
Michael Longneck
23
Карта сайта