GWT Requestfactory sugestões de desempenho
Estou observando um desempenho muito ruim ao usar o requestfactory do GWT. Por exemplo, uma solicitação que leva minha camada de serviço 2 segundos para o fullfil está levando 20 segundos do GWT para serializar. Meu serviço está retornando ~ 100 o que será EntityProxies. Cada um desses objetos tem o que se tornará 4 ValueProxies e mais 2 EntityProxies (100 EntityProxies de raiz, 400 ValueProxies e 200 EntityProxies adicionais). No entanto, vejo a mesma degradação de desempenho 10x em conjuntos de dados muito menores.
Exemplo de trecho de log:
D 2012-10-18 22:42:39.546 ServiceLayerDecorator invoke: Inoking service layer took 2265 ms
D 2012-10-18 22:42:58.957 RequestFactoryServlet doPost: Entire request took 22870 ms
Eu adicionei alguns códigos de perfil aoServiceLayerDecorator#invoke
método e envolveu todo o servlet em um temporizador. Eu criei o perfil por conta própria e, de fato, está retornando resultados em ~ 2s.
Estou usando o GWT 2.4, mas testei isso no GWT 2.5rc1 e no GWT 2.5rc2. Meu back-end está no GAE, mas não acho que esteja desempenhando um papel aqui.
eu encontreiesse bug arquivado contra 2.4, que parece estar muito relacionado. Eu apliquei manualmente o patch deeste grupo do google sem sorte.
Meus modelos de domínio se parecem com:
class Trip {
protected Address origin; // becomes ValueProxy
protected Address destination; becomes ValueProxy
protected Set<TripPassenger> tripPassengers; // Set of ValueProxies
}
class TripPassenger {
protected Passenger passenger;
}
class Passenger {
protected Account account;
}
Minha pergunta é:
Eu perfilei o código corretamente e isolei o problema para a serialização do GWT?Eu poderia estar fazendo algo errado que causaria esse comportamento?Como posso definir melhor o código de serialização do GWT para tentar descobrir a causa?