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

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

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

25 ответов

91 просмотр

Для того чтобы ускорить, надо понять, что именно ускорять. Посмотри имплементацию маппера для 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- Автор вопроса
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 - была бы разница чувствительная

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта