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.
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’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.
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.
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.
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.
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.
Le 7 décembre 2011 à 18:11
(32 443
lectures)
Il y a 65 commentaires
FrDakota
Le mercredi 7 décembre 2011 à 18:58:16
#11
Inscrit
le lundi 17 novembre 03
-
1646
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
Les musiciens déconseillent Android du fait de sa latence comparé à iOS.
Android est très en retard sur iOS
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...
Ancien pigiste chez Dream/:Login/PC Team/... les magasines de feu Posse Press quoi.
Salut copain, si tu viens nous lire...
VersionBeta
Le mercredi 7 décembre 2011 à 19:07:34
#13
Inscrit
le mercredi 19 mai 10
-
60
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.
. 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.
vyncere
Le mercredi 7 décembre 2011 à 19:27:58
#14
Inscrit
le samedi 7 novembre 09
-
971
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...
Rarrf ça craint quand même... J'vais attendre qu'ils améliorent ça avant de passer chez Android alors...
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
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
Edit: commentaire en double, comment supprimer le doublon ?
Edité par nabalzbhf le mercredi 7 décembre 2011 à 20:25
Mansonshadow
Le mercredi 7 décembre 2011 à 20:48:51
#20
Inscrit
le jeudi 12 mai 05
-
585
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...
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
Il n'est plus possible de commenter cette actualité
Vous devez être connecté ou vous inscrire en haut pour pouvoir participer aux commentaires.














