Estamos começando a fazer um uso mais pesado do GWT em nossos projetos, e o desempenho do compilador GWT está se tornando cada vez mais irritante.
Vamos começar a alterar nossas práticas de trabalho para mitigar o problema, incluindo uma ênfase maior no navegador de modo hospedado, que adia a necessidade de executar o compilador GWT até mais tarde, mas isso traz seus próprios riscos, principalmente o de não detectando problemas com navegadores reais até muito mais tarde do que gostaríamos.
Idealmente, gostaríamos de tornar o compilador GWT mais rápido - um minuto para compilar um aplicativo razoavelmente pequeno está irritando. No entanto, estamos usando o compile de uma maneira bastante ingênua, por isso espero que possamos obter ganhos rápidos e fáceis.
No momento, estamos invocando o com.google.gwt.dev.Compiler como um aplicativo java do ant Ant target, com heap máximo de 256m e muito espaço de pilha. O compilador é lançado pelo Ant usando fork = true e o Java 6 JRE mais recente, para tentar aproveitar o desempenho aprimorado do Java6. Passamos a classe principal do controlador para o compilador, juntamente com o caminho da classe do aplicativo, e assim por diante.
O que mais podemos fazer para obter velocidade extra? Podemos fornecer mais informações para que gaste menos tempo descobrindo o que fazer?
Eu sei que podemos dizer para compilar apenas um navegador, mas precisamos fazer testes em vários navegadores, o que não é realmente prático.
Todas as sugestões são bem-vindas neste momento.
fonte
Se você executar o compilador GWT com o sinalizador -localWorkers, o compilador compilará várias permutações em paralelo. Isso permite que você use todos os núcleos de uma máquina com vários núcleos, por exemplo -localWorkers 2 instruirá o compilador a compilar duas permutações em paralelo. Você não terá diferenças na ordem das magnitudes (nem tudo no compilador é paralelelizável), mas ainda é um aumento notável se você estiver compilando várias permutações.
Se você deseja usar a versão de tronco do GWT, poderá usar o modo hospedado para qualquer navegador ( modo hospedado fora do processo ), que alivia a maioria dos problemas atuais no modo hospedado. Parece que é para onde o GWT está indo - sempre desenvolva com o modo hospedado, pois as compilações provavelmente não obterão magnitudes mais rapidamente.
fonte
Embora essa entrada seja bastante antiga e a maioria de vocês provavelmente já saiba, acho que vale a pena mencionar que o GWT 2.x inclui um novo sinalizador de compilação que acelera as compilações ignorando otimizações. Você definitivamente não deve implantar o JavaScript compilado dessa maneira, mas isso pode economizar tempo durante as compilações contínuas que não são de produção.
Basta incluir o sinalizador: -draftCompile na sua linha do compilador GWT.
fonte
Aqui está uma lista dos valores user.agent nos quais você pode configurá-lo.
(Adicionando este aqui porque eu manter acabar aqui quando eu procurar o que devo definir para torná-lo só produzem uma permutação de cromo resposta é:.
<set-property name="user.agent" value="safari"/>
)fonte
Nas versões mais recentes do GWT (iniciando em 2.3 ou 2.4, acredito), você também pode adicionar
para o seu gwt.xml para fins de desenvolvimento. Isso instruirá o compilador GWT a criar uma única permutação que cubra todos os códigos de idioma e navegadores. Portanto, você ainda pode testar em todos os navegadores e idiomas, mas ainda está compilando uma única permutação
fonte
Você pode adicionar uma opção ao seu build para produção:
-localWorkers 8
- Onde 8 é o número de threads simultâneos que calculam permutações. Tudo o que você precisa fazer é ajustar esse número para o número mais conveniente para você. Veja o desempenho da compilação GWT (graças ao comentário de Dennis Ich).Se você estiver compilando no ambiente de teste, também poderá usar:
-draftCompile
que permite compilações mais rápidas, mas menos otimizadas-optimize 0
que não otimiza seu código (9 é o valor máximo de otimização)Outra coisa que mais que dobrou o desempenho do modo de compilação e hospedado foi o uso de um disco SSD (agora o modo hospedado funciona como um encanto). Não é uma solução barata, mas, dependendo de quanto você usa o GWT e o custo do seu tempo, pode valer a pena!
Espero que isso ajude você!
fonte
O compilador GWT está fazendo muitas análises de código, por isso será difícil acelerá-lo. Esta sessão do Google IO 2008 lhe dará uma boa idéia do que a GWT está fazendo e por que demora tanto.
Minha recomendação é que o desenvolvimento use o Modo Hospedado o máximo possível e, em seguida, compile apenas quando desejar fazer seus testes. Isso soa como a solução que você já encontrou, mas basicamente é por isso que o Hosted Mode está lá (bem, isso e depuração).
Você pode acelerar a compilação do GWT, mas apenas para alguns navegadores, em vez de 5 tipos que o GWT faz por padrão. Se você deseja usar o Modo Hospedado, compile por pelo menos dois navegadores; se você compilar para um único navegador, o código de detecção do navegador será otimizado e o Modo Hospedado não funcionará mais.
Uma maneira fácil de configurar a compilação para menos navegadores é criar um segundo módulo que herda do seu módulo principal:
Se o
rename-to
atributo for definido da mesma forma, os arquivos de saída serão os mesmos de uma compilação completafonte
fonte
Para o GWT 2.x, descobri que se você usar
Você pode até especificar mais de uma permutação.
fonte