Bonjour,
J'aimerai juste demander si certaines personnes ont constaté des lenteurs étranges sous linux avec SWT? Je m'explique, j'ai développé une petite application d'un écran destinée à tourner sur un petit Atom 1.6.
Sur cet écran, un champ texte et un grand scrolledComposite. Au fur et à mesure que des caractères sont tapés dans le champ texte, une requête vers une base H2 est effectuée et les résultats apparaissent dans le composite sous forme de boutons cliquables.
Sur mon ordi de dev en linux, aucun souci, la réactivité est parfaite entre chaque frappe clavier, les boutons apparaissent rapidement. En revanche sur l'atom 1.6 toujours en linux-gnome, là ça traîne entre chaque frappe, on sent que c'est pas fluide (on sent passer facilement 150-200ms) entre chaque affichage et cela donne l'impression que ça rame.
J'ai tenté plein d'optimisations sans succès, puis finalement j'ai testé mon application sur cette même machine en lançant Windows 7 (elle est en dual boot). Là surprise, c'était tout à fait fluide! J'ai profilé chaque étape de mon code, ce ne sont ni la création des boutons, ni la requête DB qui sont lentes (50ms max pour les 2 ensembles), on dirait que le gros du temps est consommé après la fin de l'exécution de mon listener! Au moment du réaffichage peut être?
Le pire encore, c'est que j'ai conçu cette même application sous Swing, même base de donnée, même principe et elle est parfaitement fluide. Pourquoi SWT est à la traîne? Est-ce que c'est la création dynamique de composants qui, contrairement à swing, demande des ressources natives OS?
J'ai cherché dans tous les sens, j'ai pensé aux drivers CG, au direct rendering de ma carte graphique mais tout ceci fonctionne et est activé selon l'utilitaire du package mesa-utils. J'ai essayé de passer mon bureau sous KDE et respectivement XFCE, pas d'amélioration. Changer openJDK pour hotspot, nada là aussi.
C'est un peu le comble, ayant choisi SWT parce que de réputation il offrait des performances nettement supérieures à Swing... Ben j'ai l'impression d'avoir un beau contre-exemple. Il y a des discussions trollesques Swing vs SWT plein le net mais en général, les performances de SWT sont admises comme meilleures (même si bcps disent que eclipse, basé sur swt, est plus fluide sous windows que sous linux). J'ai tout de même trouvé une discussion ou deux qui prétendaient que l'implémentation SWT pour gnome était pas excellente et que les gains de SWT par rapport à Swing étaient bien plus évidents sous windows.
Bref, sans partir dans le troll, j'aimerai bien savoir si certains d'entre vous ont eu l'occasion de remarquer des différences dans un sens ou l'autre.
Partager