Considérations sur le manque de fluidité d'Android

Arnaud de la Grandière |

logo androidDianne Hackborn, ingénieur chez Google, a publié un long billet qui s'exaspère au sujet des idées reçues concernant l'accélération matérielle sur Android.

L'enjeu de cette question repose essentiellement sur le manque de fluidité apparent d'Android comparé à d'autres OS mobiles, iOS en tête.

Pour autant, Hackborn tient à corriger quelques idées reçues : Android tire parti de l'accélération graphique pour certaines tâches depuis la toute première version, notamment la composition des fenêtres. Cependant, le rendu de l'intérieur des fenêtres est lui fait entièrement de manière logicielle. A partir de la version 3 d'Android, il est devenu possible d'utiliser l'accélération matérielle pour le rendu du contenu des fenêtres, mais uniquement sur l'initiative des développeurs d'applications. Android 4 rend la chose systématique.

Dianne Hackborn remet en question le fait que l'accélération graphique soit une solution universelle qui permettrait des animations fluides, tout en insistant sur le fait qu'Android en a toujours bénéficié. D'autres éléments viennent également jouer, comme par exemple le plus grand nombre de pixels à gérer sur un appareil comme le Galaxy Nexus.

De fait, qu'Android exploite ou non l'accélération matérielle n'est qu'une question secondaire, puisque ce qui pose problème c'est le manque de fluidité manifeste de l'interface. Dianne Hackborn se préoccupe plus de venir à bout de certaines idées reçues que d'expliquer cet état de fait.

C'est à cette question que s'est attelé Andrew Munn, étudiant et ancien stagiaire chez Google sur Android, et futur stagiaire chez Microsoft sur Windows Phone, en publiant à son tour un article de fond sur ce problème.

La différence fondamentale entre Android et iOS tient dans la distribution des priorités des tâches : sur iOS toute intervention de l'utilisateur interrompt les calculs en cours pour rendre l'interface fluide, alors qu'Android fait son possible pour tout traiter de manière simultanée. Mais si Apple fournit tous les outils nécessaires pour basculer une tâche donnée en tâche de fond, cela reste au développeur de l'application de faire ces choix : une application qui ferait l'impasse dessus pourrait s'avérer tout aussi saccadée que sur Android.

En réponse à Andrew Munn, Brent Royal-Gordon indique qu'il s'agit là plus d'une différence culturelle que technique entre les différents développeurs : sur iOS, les développeurs portent une attention particulière à la fluidité de leurs applications (sans doute facilitée par le nombre plus limité d'appareils sur lesquels tester).

Cependant, s'il incombe effectivement au développeur de faire le tri entre les tâches prioritaires, iOS fait de lui-même certaines modifications lorsqu'un contact du doigt est détecté : certains threads sont basculés dans des modes spéciaux, et des rappels de fonctions sont mis en pause.

Pour autant, sur Android l'interface utilisateur ne bénéficie d'aucune priorité particulière, et son rendu a lieu sur le thread principal des applications. Ce problème structurel existait également sur Windows Phone 6.5, BlackBerry OS, et Symbian, et n'a été résolu qu'en reprenant les choses à la base, voire en abandonnant l'OS pour un autre.

Andrew Munn ne considère pas que cette différence condamne Android à demeurer éternellement saccadé, mais pour l'heure du moins elle explique cet état de fait. Une modification du comportement d'Android sur ce point nécessiterait cependant la création d'un nouveau toolkit pour l'interface, qui exigerait une réécriture des applications existantes pour en tirer parti, ainsi qu'un mode permettant la rétro-compatibilité.


Tags
avatar Lou117 | 
Manque de fluidité de moins en moins perceptible à la vue de l'évolution de l'OS et de la puissance des appareils.
avatar marc_os | 
enfin puissance = énergie = temps de batterie.
avatar Lou117 | 
Pas forcément, les CPU plus modernes gèrent mieux la batterie à puissance plus élevée, grâce à l'utilisation du multi core et d'une finesse de gravure plus fine. L'A5 est plus économique que l'A4 tout en étant nettement plus puissant. C'est exactement pareil sur Android ou ailleurs.
avatar Homer Simpson | 
Tu as la même philosophie d'Adobe : Plutôt que d'optimiser leurs logiciels (côté Mac, mais pas uniquement si on pense à l'abandon de Flash pour mobiles), ils préfèrent compter sur la puissance matérielle et se tourner les pouces. (ok, j'exagère un tout petit chouïa).
avatar Lou117 | 
Non, c'est là ou tu te goures. Android s'améliore et s'optimise de version en version. Mon Nexus One en 2.1 a vu arriver la compilation JIT en 2.2 améliorée en 2.3 et tourne à ce jour bien mieux qu'à l'origine. Avec un matériel identique. On ne peut pas vraiment dire la même chose d'iOS qui a plus tendance à s'alourdir. ICS va même plus loin et tous les benchs ont dors et déjà prouvé qu'à matériel identique, ICS tourne mieux que Gingerbread. Maintenant, le marché du smartphone va vers plus et plus de puissance, que cela soit Android ou autres d'ailleurs. Apple n'a pas intégré un dual core puissant pour rien je crois... Google suit le mouvement tranquillement comme tout le monde et ne pousse personne vers le matériel dernier cri. Si après un fabricant veut se démarquer des autres et peut apporter un plus réel de puissance, personne n'ira s'en plaindre. Exemple parfait de ce que je dis, le Galaxy Nexus n'a pas un processeur ou un GPU plus puissant que celui du Galaxy S 2 sorti il y a quelques mois maintenant. Il tourne pourtant parfaitement bien. Et il y a fort à parier que les CPU quad core tel que le Tegra 3 vont encore aller plus loin en début 2012 sans que qui que ce soit n'incite à cette évolution sinon le marché lui même.
avatar an3k | 
Comme expliqué dans l'article, le Galaxy Nexus a 2,5 fois plus de pixels à traîter que le SII. Le SII ayant de plus un processeur plus puissant, il sera de facto plus fluide. Après, la seule latence que je peux détecter sur mon SII c'est l'impression que les déplacements sur l'écran ne suivent pas immédiatement le déplacement du doigt. Je m'explique. J'ai le doigt posé sur l'écran au point A. Je me déplace horizontalement vers le point B. L'image de l'écran commencera à scroller effectivement lorsque mon doigt aura effectué un certain déplacement (très très court mais assez discernable). Comme si la techno nécessitait que le doigt ait légèrement bougé pour détecter son mouvement.
avatar chabalo | 
@Ast2001 : Cette latence entre le doigt et le résultat me perturbe beaucoup et me donne systématiquement une impression de mauvais développement...
avatar adrianweatherly | 
L'auteur réfute l'argument de la puissance car les applications se complexifient à la même vitesse. Par contre, il faut modéré le débat. Il ne s'agit que d'une perception de la fluidité, il est clairement dit que Android est aussi, voir plus, rapide que iOS et WP7. Cependant cette perception est prépondérante dans le choix d'un consommateur.
avatar Lou117 | 
@Francis Kuntz : aucun fanboyisme là dedans. Personne n'a dit le contraire. Enfin Android ne SAVAIT pas gérer l'audio RT. C'est chose faite dans ICS.
avatar Lou117 | 
@riri12 : ne prends pas ton cas personnel sur un appareil haut de gamme récent comme étant une réalité pour tous. Le souci est réel et existe. Maintenant comme je le disais, et tu le confirmes, les appareils s'améliorant, la chose se ressent bien moins.
avatar napuconcture | 
@Francis Kuntz La Galaxy Tab est elle en 3.2.1 ou supperieur, elle amélioré la fluidite a ce niveau. Il faut aussi voir que le Tegra 2 malheureusement en oeuvre dans quasi toutes les tablettes android a un GPU tres tres mauvais. C'est etonnant mais le Tegra 2 de ma xoom est bien moins bon que le xenyos de mon SGS II.
avatar Darkpoze | 
@riri12 : tu racontes des grosses âneries, la preuve : http://www.anandtech.com/show/5133/galaxy-nexus-ice-cream-sandwich-initial-performance
avatar an3k | 
@GaelW@mac.com Ton commentaire est à côté de la plaque. désolé. riri12 parle d'un Galaxy S2 sous android 2.3.6. Et il ets vrai qu'Android 2.3.6 améliore notablement le moteur javascript.
avatar matsfr | 
@riri12 : si seulement tu pouvais arrêter de poster ici en disant n importe quoi
avatar djmat | 
Android c'est des multitudes d'appareils. J'ai jamais vu des hauts de gammes ramer. Evidemment en revanche j'ai deja vu un ZTE blade ramer. Mais bon faut savoir ce qu'on veut. Avoir un smartphone qui rame un peu quand on a pas les moyens c'est toujours mieux que ne pas en avoir.
avatar angealexiel | 
"Pour autant, sur Android l'interface utilisateur ne bénéficie d'aucune priorité particulière, et son rendu a lieu sur le thread principal des applications. Ce problème structurel existait également sur Windows Phone 6.5, BlackBerry OS, et Symbian, et n'a été résolu qu'en reprenant les choses à la base, voire en abandonnant l'OS pour un autre." Ou alors simplement faire comme tout développeur qui se respecte, n'exécuter les tâches lourdes que dans des thread dédiés avec des callbacks asynchrones. De cette manière on ne force pas le développeur à gérer toute la complexité d'une action asynchrone pour chaque minuscule action, qui potentiellement aurait parfaitement pu être réalisée dans le Thread de la GUI. Bon sauf qu'en réalité, vu la nature du fonctionnement des produits mobiles, il est impossible d'assurer que d'un point A du code on ira séquentiellement à un point B à cause des diverses interruptions (onPause(), onStop(), onDestroy() levées à la rotation de l'écran, a l'ouverture d'une popup, manque de batterie, ou de ram, un appel, etc.). Du coup on à quand même à gérer certains aspects de l'asynchrone.
avatar angealexiel | 
@Nonoche: Je ne vois pas pourquoi cela ne devrait pas arriver, si j'ai un chargement d'image qui est lancé dans un Thread secondaire et qui doit à terme prévenir le Thread principal, celui de la GUI, qui cette image doit être affichée, je souhaite que l'image s'affiche même si je suis en train de défiler le contenu (composé potentiellement d'autres images qui elles ont fini de charger). Et ce que je veux éviter par dessous tout, c'est que le scrolling soit resetté et que ma page remonte à chaque fois qu'un élément se charge ! Cf l'application MacGé il y a quelques temps :P (je ne sais pas si ça le fait toujours) Rien n'empêche le développeur d'ajouter un listener sur le scrollable pane et de mettre lui même en pause les retours asynchrones s'il jugent qu'ils vont altérer la fluidité. Android laisse parfaitement ce choix.
avatar domshovel | 
A tes souhaits
avatar Homer Simpson | 
Ne pas optimiser un OS ou un logiciel, ce n'est pas un problème en soi ? Et bien si. C'est comme ça qu'on arrive à des machines avec x GHz moins fluides au niveau de l'interface utilisateur que de vieux Mac sous PPC, voire même avec un bon vieux Mac SE : Sur mon SE 30, quand je clique sur un menu, il apparaît immédiatement - car il n'a pas besoin de lire x fichiers pour chercher le contenu du menu.
avatar napuconcture | 
Sur les tablettes le launcher n'etait pas fluide. Les Nexus One et S que j'ai eu ont toujours ete fluide. http://v.youku.com/v_show/id_XMjMxNzkxMjEy.html : c'est un peu long mais je ne trouve pas qu'android soit moche ou lent.
avatar Lou117 | 
@Zanfi : les Android haut de gamme jouent depuis longtemps à armes égales avec les iPhone. Cela ne fait en rien des iPhone des mauvais appareils il me semble :) D'ailleurs ils sont vendus à des prix relativement similaires dans l'ensemble. Certes, certains vont tenter de "convertir" des amateurs d'Apple vers autre chose, cela n'a ni intérêt ni sens puisque chacun est libre de son choix et fait en fonction de ses besoins. @riri12 : quel rapport avec le sujet de l'article ? Tu racontes un peu n'importe quoi depuis le début :(
avatar guiz913 | 
Le fait davoir des widget doit y être aussi pour pas mal dans le "manque" de fluidité d'android non?JE veux dire faire défiler des icones ou des fenetres avec du contenu dynamqie ca doit être un poil plus "gros" à faire défilé non?Parce que si on prend un androphone genre sgs 2 je suppose que dans le menu des applications (donc l'endroit ou android n'a que les icones des applications) c'est aussi fluide que sur iphone ..en tout cas avec mon 2x il est aussi fluide que l'iphone 4... Par contre le "décalage" quand on déplace le bureau android est bien là!!Chose que l'on ne retrouve pas sur iphone!
avatar Lou117 | 
Non, théoriquement, une fois le tout accéléré matériellement, widget ou non ça devrait être tout aussi fluide. A savoir, le défilement des bureaux d'Android n'est pas similaire au défilement des écrans ou listes. Il y a un défilement un peu "en décalé" voulu pour plus ou moins fluidifier la chose. A priori c'est pas ce que vous en attendez mais c'est choisi. Pour preuve, si vous allez dans la visionneuse de photo, un défilement d'une photo à l'autre sera là immédiat et exactement comme attendu.
avatar Lou117 | 
... Mode cours de récré on ? :D
avatar napuconcture | 
Je suis decu que tu ne trouves pas mon Android indiqué la haut bien sympa.
avatar jewan | 
Rien n'est moins sur desolé.
avatar Abudah237 | 
Il a fallu des années avant que le framework graphique Swing de Java soit rapide et réactif. Google a tout refait sur ce sujet là, j'ai du mal à imaginer que la couche d'appel soit suffisamment optimisée à l'heure actuelle, même sur ICS. Il n'y a pas que les couches de bas niveau qui sont importantes, il y a la boucle d'événements, le chemin à suivre dans l'API pour chaque action, la machine virtuelle, etc... L'API graphique d'Android est en plus loin d'être simple, il y a fort à parier que Google aie encore des efforts à faire...
avatar Abudah237 | 
En plus, mon expérience, c'est que l'API est encore bourrée de bugs, en tout cas c'était encore le cas avant ICS, et je ne souscrit pas au "sur ICS on rase gratis" général...
avatar boccob | 
Je ne vais pas entrer dans la polémique en disant que c'est la faute a titi ou toto. J'ai un GS2 et un i4s. Force est de constater que de base, il y a effectivement un ressentit moins fluide sur le GS2 (est ce que ce n'est qu'un ressentit, est ce que c'est mesurable, j'en sais rien). Mais, (et la encore, je n'entre pas dans le debat du "bien ou mal") on peut y remedier pour ceux que ca interesse, avec un kernel custom, quelques patches et deux ou 3 reglages (en root bien sur). Et tout devient aussi fluide et reactif qu'un i4s. - OUI je sais que c'est Apple c'est natif, on a compris ... la je dis juste ça pour les gens qui ont DEJA un GS2 et qui sont un peu deçu.
avatar jewan | 
Ben Touchwizz n'est pas totalement accéléré graphiquement . Car d'origine le browser est archi fluide sans en rajouter. Je pense qu'avec la full accélération graphique d'ICS on va avoir de la glisse tant attendue :D
avatar jewan | 
Je te trouve bien sévère la. Mais je me souviens de la débâcle HC pourtant accéléré graphiquement.... Donc je suis d'accord avec toi pour le moment. Franchement ICS semble très fluide bien plus que GB ou Froyo .J’espère juste que les ingés de Google arriveront a une fluidité quasi parfaite que l'on retrouve sur IOS ou WP7. Mais de ce que l'on a pu voir on en est pas loin .
avatar mien | 
je n'ai pas d'Android donc pas d'avis sur la question mais je m'étonne que les fans d'Android disent que la réactivité aux actions de l'utilisateur est géniale sur leur téléphone là où les ingénieurs de Google disent que ce n'est pas le cas et que l'accélération matérielle annoncée avec ICS ne changera pas grand chose à ce niveau... Google a-t-il décidé brutalement de dénigrer son produit ou est-t-il honnête et préfère refroidir un peu les attentes de ses fans sur cette question ?
avatar hjauny | 
riri1207/12/11 13:37 @GaelW@mac.com ya aucune preuve va sur youtube et tape galaxy s2 sunspider ou browser speed vs 4s et tu verra je fais pas confiance au pseudo testeur et leur jolis tableau avec un score du s2 qui prend pas en compte les mise à jour.Ce score est celui de la version 2.3.5 et donc celle d'origine sur le s2 mais depuis la mise à jour le téléphone à pris un coup de jeune et même en lisant du flash 1080p la page est super fluide. enfin je crois que ce que je voi et je voulais précisez il en de même pour le galaxy note ou une dizaine de teste sur youtube fait par des particulier explose le 4s en terme de fluidité sur internet et de score sur sunspider et pourtant sur la plupart des sites il nous disent le contraire donc je fait pas confiance à la plupart de ces fanboys. donc arrete de prendre pour parole d'évangile tous ce que disent tous ces sites qui ont le saient ont beaucoup de mal à dire la vérité sur apple pourtant quand ont va sur discussions.apple.com et les défaut soulevé par les utilisateurs du 4s eh ben ya de quoi faire de sacrée article "jaunisse, batterie, perte de communication, perte de wifi, imessage, non à la place ils préfère faire des articles sur android lol! À ta place je me tairais ... Mon père à le SGS2 et j'ai l'iPhone 4S. Tu veux que je te cite tout les défaut de ton joujou? -Batterie toute pourris ! Le S2 tient aller 2 jours en veille sans toucher. -écran plus que merdique ! Les couleurs sont dégueulasse !! -les vidéo 1080 c'est bien, avec un stabilisateur c'est mieux -Samsung kies est une belle merde !! Impossible à utiliser -ne parlons même pas des prêtent de réseau et de wifi comme tu d'assurés iPhone, sur leS2 je n'arrive pas à avoir une wifi stable et il perd le réseau 4 fois sur 6 ... Aller degage sale fandroid !!
avatar jewan | 
Alors manque de pot je dispose d'un S2 .... Je reconnais que son autonomie n'est pas folichone mais 2 jours en veille totale la tu bluffes clairement. Couleur degeulausse ? Depuis quelques temps c'est votre nouveau argument... Sache que certains aiment les couleurs plus chaudes .Un écran plus flatteur en somme . Samsung Kies une merde ? C'est que tu n'es vraiment pasdoué. La V2 qui passe désormais par un navigateur est vra iment bien foutue et n'est pas plantogène comme la v1. Quand a la perte de reseau la encore tu me surprends vu que l'accroche reseau est un des points forts du S2. Bref tu sembles un peu hater non ?
avatar Enyx | 
En tous cas pour avoir comparé les tablettes haut de gamme m (galaxy tab, iconica transformer,...) et l'ipad 2 il n'y a pas photo ! Ces tablettes haut de gamme sous androïde rament et sont du coup frustrante à utiliser. L'iPad 2 est très fluide. Je tiens à préciser qu'au départ je voulais m'acheter la galaxy tab, mais après essais j'ai opté pour le confort d'utilisation amené par la fluidité de l'ipad 2.

CONNEXION UTILISATEUR