Eclipse… oui ! Mais sans les lenteurs !

Contexte Aujourd'hui comme nombre d'entre-nous - développeurs Android - lançons Eclipse pour construire   nos belles applications Android ( Certains préféreront IntelliJ cf l'article correspondant ). A force d'importer des […]

Contexte

Aujourd'hui comme nombre d'entre-nous - développeurs Android - lançons Eclipse pour construire   nos belles applications Android ( Certains préféreront IntelliJ cf l'article correspondant ).

A force d'importer des librairies pour agrémenter mon application principale, mon workspace met de plus en plus temps à build... Quoique cela reste raisonnable vu la machine que j'utilise !

Cependant, ce n'est pas tant le temps de compilation qui me frustre le plus pendant que je programme... c'est généralement les lenteurs à l'ouverture de fichiers ou changement d'onglets.
Des petits temps de latences qui mettent parfois 5 à 10 secondes lorsque l'on a passé 1/2 journée sur son Eclipse. Sans parler du temps pour jongler entre le graphical layout et le code XML de vos UI Android... je me retrouve généralement à regarder Facebook ou Twitter... pas toujours à l'avantage de ma productivité !

Vous ne vous êtes peut-être pas encore posé la question pensant que votre machine était peut-être un peu dépassé ou que c'était "normal" ? Mais oui, il existe quelques astuces pour optimiser son Eclipse ! ( Et oui, ça marche :] )

Trêve de blabla, là ou il est généralement le plus facile de redonner un peu de jus à Eclipse ( surtout si vous avez beaucoup de RAM ! ),  est d'éditer le fichier eclipse.ini !
Il se trouve généralement à côté de l'exécutable d'Eclipse sauf dans le cas de MAC OS X où il faudrait aller fouiller dans le Eclipse.app.

Vous remarquerez surement que les valeurs Xms, Xmx, ... ne sont pas très élevées ( surtout quand on a 16 go de RAM ... )

Voici ce que j'obtiens après avoir un peu cherché et modifier les paramètres à ma sauce :

Eclipse.ini

( code système tronqué )

-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
2048m
--launcher.defaultAction
openFile
-vmargs
-server
-Dosgi.requiredJavaVersion=1.7
-Xmn256m
-Xms2048m
-Xmx2048m
-Xss4m
-XX:PermSize=256m
-XX:MaxPermSize=384m
-XX:+UseParallelGC

Pour nuancer mes propos, je travaille sur un Macbook pro retina avec 16 go de RAM et donc j'ai par principe multiplié par 2 les valeurs que j'ai trouvé pendant mes recherches.
Je doute qu'aller plus haut améliore encore mes performances sur les projets que je traite.

Vous trouverez surement des valeurs plus raisonnables sur divers articles que j'ai consulté pour faire ces modifications :

http://blog.normation.com/2010/05/24/optimizing-eclipse-performances/
http://www.beyondlinux.com/2011/06/25/speed-up-your-eclipse-as-a-super-fast-ide/
http://www.tekphile.com/2012/05/make-eclipse-run-blazingly-fast-on-mac-os-x/

Et à part ça ?

On notera également dans le second article, plusieurs conseils concernant les plugins & services lancés au démarrage !
Il peut être temps de faire le tri ! Mon premier réflexe a d'ailleurs était de désactiver le lancement de l'Eclipse Marketplace qui parfois prenait un temps fou à s'initialiser !
la procédure est simple : menu Windows -> Preferences, cherchez “startup”, et selectionner “Startup and Shutdown”, il ne reste plus qu'à décocher ce dont vous ne vous servez pas tout le temps !

 Eclipse 4.2, des problèmes connus :

La dernière mouture Juno n'est pas sans défaut quand il s'agit d'éditer des fichiers XML et les ralentissements entre les changements d'onglets sont fréquents. En témoigne ce thread, où l'on trouve des solutions plus ou moins adéquate selon votre situation :

http://www.eclipse.org/forums/index.php/mv/msg/367243/0/40/

 

Vous trouverez un patch qui semble améliorer les changements d'onglet entre autres dans le post suivant :

https://bugs.eclipse.org/bugs/show_bug.cgi?id=385272#c212

 

La version 4.2.2 d'Eclipse est sortie, je vous conseille de faire la mise à jour...
Vous pouvez mettre à jour vos paquets avec "Help -> Check Updates...".
Pensez à update vos packages au niveau du SDK Manager Android. ( sans ça j'ai planté mon Eclipse )

Pour ma part j'ai tenté l'aventure pour un Eclipse 4.3 Kepler en Integration build, à voir si cela a un réel impact.

Il est donc préférable d'effectuer une sauvegarde de votre Eclipse... au cas où...

 

J'ai également trouvé plusieurs paramètres qui reviennent assez souvent pour améliorer les performances comme :

-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+CMSIncrementalPacing
-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods

Certaines astuces concernent l'UI également comme l'utilisation du thème classique.

Certains iront même jusqu'à revenir sur Indigo 3.8 pour tenter de retrouver des performances.
A voir si la future version Kepler résoudra les problèmes ci-contre.

Aussi petite information : le build d'application Android est nettement plus rapide sur les systèmes Unix ! Je ne saurais vous l'expliquer mais entre mon ancien pc sous windows 7 et mon mac,
j'opterais pour un ratio de 10 à 100x plus rapide sur les temps de compilation. Il est peut-être temps de passer à Linux ou Mac OS X si vous avez l'impression de devoir prendre un café à chaque compilation.
Si quelqu'un a essayé de voir s'il y a un gain sur une VM Linux sur Windows... je suis preneur !

Je profite de cet article pour vous proposez un de mes petits tutorials concernant les listes Drag & Drop et les view pager indicators.

N'hésitez pas à partager vos astuces si vous en trouvez d'autres !  Si vous avez le temps de vous amuser à tuner votre eclipse.ini, n'hésitez pas à le proposer !

 

Social Share Toolbar
Christophe Oudar

About Christophe Oudar

Elève-ingénieur à l'ENSEIRB-MATMECA et compile de l'android depuis mi-2011 ! Développeur de ComboTouch et de plein d'autres applis à venir ;)