Я передаю список объектов клиенту с запросом GWT Factory. Объекты содержат только пару строк, и список содержит только 20 объектов. Для переноса этого небольшого списка данных требуется более секунды. Сначала я думал, что запрос нужно оптимизировать. Но измерение показывает:
Извлечение объектов из базы данных требует только
300ms
Передача клиенту занимает в общей сложности более секунды
1136ms
Таким образом, это, как представляется, запрос factory служебных данных. Я уже использовал свой собственный ServiceLayerDecorator
и переопределил функцию isLive()
, чтобы он всегда возвращал true
. Есть ли какие-либо другие действия, которые я могу предпринять, чтобы ускорить это и привести производительность в приемлемую область?
Update:
Я создал логику для копирования данных объекта объекта в DTO и передал их RPC для сравнения RPC и Request factory. Как вы видите, RPC-логика намного быстрее. Теперь мне интересно, если это по дизайну или есть недостатки в моем приложении.
20 перенесенных объектов:
Request factory: 1252 ms
RPC: 420 ms
28 перенесенных объектов:
Request factory: 1654 ms
RPC: 460 ms
78 перенесенных объектов:
Request factory: 3963 ms
RPC: 769 ms
=============================================== =============
Update2
Итак, я написал очень простое примерное приложение, чтобы убедиться, что у моего приложения нет фильтров или других мешающих компонентов. Приложения загружают 10 объектов с 4 строковыми полями с сервера. Я сделал это с помощью запроса factory, а также RPC и остановил время.
Код можно найти здесь: https://github.com/jan10101/requstFactoryVSRPC
Демо-версия жизни здесь: http://requestfactorytest.appspot.com/
Приложение-тест подтверждает мое наблюдение: производительность запроса factory очень плохо по сравнению с производительностью RPC. В режиме dev производительность RPC примерно в 40 раз выше, в режиме производства - еще 4 раза. Я первый, кто замечает проблемы с производительностью?
Следующие скриншоты показывают результаты теста, если вы не хотите попробовать его самостоятельно.
Результаты в режиме dev:
Результаты продуктивного кода (в приложении):