Подтвердить что ты не робот

Плохой запрос GWT Factory производительность для списка объектов

Я передаю список объектов клиенту с запросом 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:

enter image description here

Результаты продуктивного кода (в приложении): enter image description here

4b9b3361

Ответ 1

Я не уверен, насколько это уместно для вашего конкретного случая, но проблема может быть AutoBeans. RequestFactory широко использует AutoBeans.

Недавно я смог решить проблему производительности в приложении GWT, уменьшив использование AutoBeans, которые выглядят очень медленно. Использование иерархического профилировщика производительности, такого как инструмент IE F12, идентифицировало Autobean-код как корень проблемы, поэтому проблема производительности была на стороне клиента. IIRC решение заключалось в том, чтобы скопировать AutoBeans на "реальные" объекты Java после завершения вызова.