205 votes

Comment puis-je accélérer le compilateur gwt?

Nous commençons à faire plus lourd l'utilisation de GWT dans nos projets, et les performances du compilateur GWT est en train de devenir de plus en plus ennuyeux.

Nous allons commencer à modifier nos méthodes de travail afin d'atténuer le problème, y compris un plus grand accent sur la hébergés en mode navigateur, ce qui reporte la nécessité d'exécuter le compilateur GWT jusqu'à un moment plus tard, mais qui apporte ses propres risques, en particulier celui de ne pas attraper des problèmes avec de vrais navigateurs jusqu'à beaucoup plus tard que nous le souhaiterions.

Idéalement, nous aimerions prendre le compilateur GWT lui-même plus rapide - une minute pour compiler une assez petite application est de prendre la pisse. Cependant, nous sommes à l'aide de la compilation si l'un d'assez naïf de la mode, alors j'espère que nous pouvons faire un certain rapide et facile des gains.

Nous sommes actuellement en invoquant com.google.gwt.dev.Compilateur comme une application java à partir de ant ant cible, avec 256m max tas et beaucoup d'espace de pile. Le compilateur est lancé par Ant l'aide d'une fourchette=true et la dernière version de Java JRE 6, à essayer de tirer parti de Java6 l'amélioration des performances. Nous passons notre contrôleur principal de la classe pour le compilateur avec le classpath de l'application, et c'est parti.

Quoi d'autre pouvons-nous faire pour obtenir une vitesse supplémentaire? Pouvons-nous donner plus d'informations si il passe moins de temps à faire la découverte de ce que faire?

Je sais que nous pouvons dire qu'à compiler pour un navigateur, mais nous devons faire de multi-test du navigateur, ce qui n'est pas vraiment pratique.

Toutes les suggestions bienvenue à ce point.

145voto

Yuval Adam Points 59423

Commençons avec la désagréable vérité: compilateur GWT performance est vraiment moche. Vous pouvez utiliser des hacks ici et là, mais vous n'allez pas obtenir beaucoup de meilleures performances.

Une belle performance hack que vous pouvez faire est de compiler uniquement pour certains navigateurs, en insérant la ligne suivante dans votre gwt.xml:

<define-property name="user.agent" values="ie6,gecko,gecko1_8"></define-property>

ou dans gwt 2.x la syntaxe, et pour un navigateur uniquement:

<set-property name="user.agent" value="gecko1_8"/>

C'est, par exemple, de compiler votre application pour IE et FF. Si vous savez que vous êtes en utilisant uniquement un navigateur spécifique pour les tests, vous pouvez utiliser ce petit hack.

Une autre option: si vous utilisez plusieurs endroits, et à nouveau en utilisant une seule pour les tests, vous pouvez commenter tous les afin que GWT va utiliser les paramètres régionaux par défaut, cela se rase des surcharges supplémentaires à partir de la compilation.

Enfin, il y a un joli blog sur l'augmentation de la compilation de la performance:

Bottom line: vous n'allez pas pour obtenir l'ordre de grandeur augmentation compilateur de performance, mais en prenant plusieurs détentes, vous pouvez raser quelques minutes ici et là.

62voto

Chi Points 8991

Si vous exécutez le compilateur GWT avec l'-localWorkers drapeau, le compilateur compile plusieurs permutations en parallèle. Cela vous permet d'utiliser tous les cœurs d'un multi-core de la machine, par exemple -localWorkers 2 sera de dire au compilateur de ne compiler les deux permutations en parallèle. Vous n'obtiendrez pas l'ordre de grandeur des différences (pas tout le compilateur est parallélisable), mais il est encore une notable accélération si vous êtes à la compilation de plusieurs permutations.

Si vous êtes prêt à utiliser le coffre de la version de GWT, vous serez capable de l'utiliser en mode hébergé pour n'importe quel navigateur (en dehors du processus en mode hébergé), ce qui atténue la plupart des questions actuelles de mode hébergé. Qui semble être l'endroit où l'GWT va - toujours développer avec mode hébergé, depuis compile ne sont pas susceptibles d'obtenir beaucoup plus rapide.

55voto

monzonj Points 1791

Bien que cette entrée est assez vieux et la plupart d'entre vous le savez probablement déjà, je pense qu'il vaut la peine de mentionner que GWT 2.x inclut un nouveau drapeau de compilation qui accélère compile en sautant les optimisations. Vous ne devriez pas déployer JavaScript compilé de cette façon, mais il peut être un gain de temps lors de la non-production continue construit.

Il suffit d'inclure le drapeau: -draftCompile à votre compilateur GWT ligne.

32voto

Stephen Points 249

Voici une liste de useragents vous pouvez le configurer pour.

(L'ajout de cette ici parce que j'ai garder de se retrouver ici, lorsque je recherche ce que je devrais ensemble à faire que de produire une permutation pour chrome. La réponse est: <set-property name="user.agent" value="safari"/>)

30voto

Chi Points 8991

Dans les versions plus récentes de GWT (départ soit 2.3 ou 2.4, je crois), vous pouvez également ajouter

<collapse-all-properties />

pour votre gwt.xml à des fins de développement. Qui dira le compilateur GWT pour créer une seule permutation qui couvre tous les paramètres régionaux et les navigateurs. Par conséquent, vous pouvez toujours tester dans tous les navigateurs et les langues, mais en sommes encore qu'à la compilation d'un seul permutation

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X