S'identifier / Créer un compte
  • Actualités
  • Dossiers
  • Tests
  • Commentaires
  • INpactiens
Publicité

Flash Info : Fêtons la TVA à 2,1 % : abonnez-vous dès 17 € par an !

Quand des (ex) employés de Google se penchent sur la fluidité d'Android

Le débat est ouvert, les solutions plurielles

Plusieurs messages postés par des employés et ex-employés de Google viennent éclairer la question des performances de l’interface d’Android d’un jour nouveau. Lorsque l’on évoque le système mobile, la fluidité de l’interface est régulièrement pointée du doigt comme n’étant pas d’une fluidité parfaite. Pourquoi ? Éléments de réponse.

galaxy nexus

L'accélération graphique existe depuis Android 1.0

Les éléments de réponse ont commencé à être donnés par Dianne Hackborn, ingénieur logiciel sur Android. Elle indique dans un billet sur Google+ qu’elle s’est décidée à aborder le sujet car les critiques sur la fluidité de l’interface d’Android reviennent régulièrement sur le tapis. Elle ne prétend pas contester ce manque de fluidité, mais a tenu à rétablir quelques vérités techniques.

Ainsi, l’accélération graphique existe au sein d’Android depuis la version 1.0. Bien entendu, elle a grandement évolué et n’est devenue totale qu’avec la mouture 3.0 (Honeycomb). La conséquence de cette accélération est que la grande majorité des animations visibles à l’écran ainsi que l’affichage des fenêtres elle-même a bénéficié de cette accélération. Il faut savoir cependant que toutes les versions d’Android antérieures à la 3.0 utilisent une méthode logicielle pour mettre à jour le contenu au sein d’une fenêtre. Cependant, cette mise à jour ne provoque pas un rafraichissement de tous les autres éléments.

L'accélération a ses propres problèmes

Elle indique également que si l’accélération complète est arrivée avec Android 3.0, la version 4.0 l’a rendue plus systématique. Pourquoi ? Parce qu'une application visant la dernière mouture du système sera automatiquement accélée. Comme elle le précise toutefois, il n’y a pas de recette magique avec l’accélération : chaque élément en bénéficiant consomme tout simplement plus de mémoire vive. Ce n’est pas forcément un problème sur des téléphones récents comme le Galaxy SII, mais ce peut l’être sur des modèles plus anciens.

L’ingénieure cite également un cas pratique, celui d’Android 4.0 sur le Nexus S. les développeurs ont remarqué que l’interface pouvait parfois être plus lente qu’avec Android 3.0. Pourquoi ? Parce qu’une application peut gérer un événement tactile pendant qu’elle dessine du contenu à l’écran et sauter à l’événement suivant sans que ce dernier soit réellement prêt, ce qui provoque un saut dans les images. Elle précise cependant dans une mise à jour de son billet que la puissance du GPU est un élément crucial quand la définition de l’écran augmente, comme dans le cas du Galaxy Nexus et ses 720p.

Une question de priorité ?

Mais Andrew Munn, anciennement stagiaire chez Google,  a publié lui aussi un billet venant compléter celui de Dianne Hackborn. Il a décidé de s’attaquer à une question qu’il entend régulièrement : « Pourquoi Android manque-t-il de fluidité alors qu’iOS, Windows Phone 7, QNX et WebOs sont fluides ? ». Il fournit quelques éléments de réponses en indiquant bien que ses connaissances peuvent être incomplètes et que ses explications ne concernent que lui.

Premièrement, il tord le cou à quelques idées reçues, notamment le fait que le code d’iOS (pris en exemple) soit natif explique la différence de performances face au bytecode d’Android (machine virtuelle Java). La différence se situe ailleurs : iOS (et Windows Phone 7) ont un processus dédié en charge de la gestion des évènements tactiles. Or, ce processus dispose d’une priorité temps réel.

Il donne exemple le chargement d’une page dans Safari : à mi-chemin du chargement, poser le doigt sur l’écran et « remuer » l’image stoppe l’apparition des éléments suivants. La même manipulation sur Android donne des résultats différents. Le système de Google calcule l’ensemble des évènements en même temps, le tactile comme le chargement de la page.

Il s’agit d’une explication très simplifiée complétée d’ailleurs par une mise à jour. Dans celle-ci, il cite l’un de ses lecteurs pour ajouter une précision de taille : certes un développeur iOS peut faire basculer l’intégralité du code de son application sur le processus principal, mais cela n’a rien d’obligatoire, et ce n’est en fait pas recommandé. La composition de l’affichage et le lot des animations sont calculés dans un processus en arrière-plan. Tout nouveau contenu est ensuite basculé sur le processus principal.

D'autres facteurs sont à prendre en compte

La priorité du processus n’est pas la seule explication : la puissance du GPU a une importance directe sur les performances ressenties. D’autres explications sont données :
  • Les performances du ramasse-miette dans la machine virtuelle Dalvik ont un impact réel, pour les raisons que nous évoquions d’ailleurs au sujet d’un changement important en préparation dans Chrome
  • D’un GPU à un autre, les possibilités peuvent être différentes. Le Tegra 2 de NVIDIA ne possède par exemple pas les instructions NEON que l’on peut comparer grossièrement au SSE des processeurs Intel.
  • Sur iOS, chaque élément de l’interface utilisateur dispose d’un rendu séparé et le GPU peut les manipuler dans le désordre. Sur Android, ce n’est pas le cas : chaque animation nécessite que soit redessinés tous les éléments affectés.
  • Une bonne partie de l’interface s’appuie sur Dalvik et ses performances ne sont parfois pas suffisantes.
Pour Munn, il n’y aura pas d’amélioration franche de la fluidité tant que le framework responsable de l’interface ne serai pas rebâti autrement. Il cite Romain Guy, ingénieur chez Google responsable d’une partie de travail effectué sur l’accélération graphique dans Android 3.0. Selon Guy, Google réfléchit actuellement à des solutions pour contourner les problèmes soulevés, notamment la manière dont le système traite les animations.

Pourtant, Romain Guy, même s’il est d’accord sur le concept d’un nouveau framework, soulève les gros défauts d’une telle décision. La plus importante serait l’énorme modification que cela entraine dans la base du système et la cassure dans la compatibilité des applications. Il faudrait alors créer un mode Legacy (héritage) pour que les anciennes applications fonctionnent tout en promouvant le nouveau framework. En outre, de nombreuses parties du système ne pourraient plus évoluer tant que ce framework ne serait pas prêt.

Le problème est donc soulevé, mais Google est parfaitement au courant de la situation. Les différences entre les systèmes apparaissent comme étant davantage de l’ordre décisionnel/culturel mais il est clair que la réactivité et la fluidité sont deux éléments cruciaux aujourd’hui dans l’appréciation d’un produit tactile.
Vincent Hermann

Rédacteur/journaliste spécialisé dans le logiciel et en particulier les systèmes d'exploitation. Ne se déplace jamais sans son épée.

Publiée le 07/12/2011 à 18:11

Soutenez l'indépendance de Next INpact en devenant Premium

  • Tout le contenu de Next INpact sans pub
  • Et bien plus encore...

Il y a 65 commentaires

Avatar de FrDakota INpactien
FrDakota Le mercredi 7 décembre 2011 à 18:58:16
Inscrit le lundi 17 novembre 03 - 1732 commentaires
Et même du côté audio c'est pas le pied.

Les musiciens déconseillent Android du fait de sa latence comparé à iOS.

Android est très en retard sur iOS
Avatar de Dude76 INpactien
Dude76 Le mercredi 7 décembre 2011 à 19:02:12
Inscrit le mardi 8 novembre 05 - 982 commentaires
Romain Guy, mon demi-dieu de la programmation ^^
Ancien pigiste chez Dream/:Login/PC Team/... les magasines de feu Posse Press quoi.

Salut copain, si tu viens nous lire...
Avatar de VersionBeta INpactien
VersionBeta Le mercredi 7 décembre 2011 à 19:07:34
Inscrit le mercredi 19 mai 10 - 70 commentaires
C'est clair qu'il y a des progrès à faire sur android niveau fluidité... J'aimerais bien voir la version 4 pour jauger les différences à ce niveau, mais encore faut-il que le mobile puisse accéder aux prochaines mises à jour (pas gagné dans mon cas, galaxy s premier du nom...) . Heureusement, Android a d'autres avantages que sa vitesse d'exécution...


+1 c'est le jour et la nuit même si maintenant je suis passé sous Dolphin


+1, dolphin est largement meilleur à mon goût, très plaisant et rapide... Le navigateur intégré ne donne pas une excellente image d'android malheureusement.
Avatar de vyncere INpactien
vyncere Le mercredi 7 décembre 2011 à 19:27:58
Inscrit le samedi 7 novembre 09 - 980 commentaires
Ah bah cet article me rassure ! J'étais étonné du manque de fluidité du GS2, ce n'était donc pas une fausse impression., ni un bug du mobile de mon pote alors.

Rarrf ça craint quand même... J'vais attendre qu'ils améliorent ça avant de passer chez Android alors...
Avatar de Just1_ INpactien
Just1_ Le mercredi 7 décembre 2011 à 19:28:28
Inscrit le lundi 9 juin 08 - 1314 commentaires
Pour le moment je suis bluffé d'ICS sur le galaxy nexus, c'est très très fluide ça me change de mon Desire! On va dans la bonne direction
Commentaire de Huron supprimé le 07/12/2011 à 19:35:01 : Troll ou incitation au troll
Commentaire de Seth-Erminatores supprimé le 07/12/2011 à 19:36:45 : Don't cite le troll :)
Commentaire de nabalzbhf supprimé le 07/12/2011 à 22:46:41 : Commentaire en double
Avatar de nabalzbhf INpactien
nabalzbhf Le mercredi 7 décembre 2011 à 20:24:30
Inscrit le jeudi 5 mars 09 - 715 commentaires
L'explication de l'ancien stagiaire est quand même très controversée (par exemple sur hacker news).

Edit: commentaire en double, comment supprimer le doublon ?

Edité par nabalzbhf le mercredi 7 décembre 2011 à 20:25
Avatar de Mansonshadow INpactien
Mansonshadow Le mercredi 7 décembre 2011 à 20:48:51
Inscrit le jeudi 12 mai 05 - 586 commentaires
Romain Guy, mon demi-dieu de la programmation ^^
Ancien pigiste chez Dream/:Login/PC Team/... les magasines de feu Posse Press quoi.

Salut copain, si tu viens nous lire...


+1, à l'époque où il était chez Sun il avait fait un beau boulot autour de Swing avec Chet Haase. J'avais d'ailleurs acheté leurs bouquin sur le sujet

Edité par mansonshadow le mercredi 7 décembre 2011 à 20:49
;