« Android ne sera jamais aussi fluide qu’iOS ou Windows Phone », pourquoi ?


 Le 07/12/11

En ce moment une discussion très intéressante (et très technique) a lieu sur Google+. Elle concerne Android et la fluidité de son interface, en comparaison avec iOS et Windows Phone.

J’ai la chance de manipuler des dizaines de mobiles sous différents systèmes tous les mois, et j’ai eu, effectivement, le temps de constater ceci : même en haut de gamme, Android reste toujours moins fluide à l’utilisation (dans l’interface) qu’iOS ou Windows Phone.

Je l’ai constaté et le constate encore aujourd’hui, notamment sur les défilements sur le web, où un « petit » Omnia W est plus fluide qu’un « gros » Galaxy S 2. Mais pourquoi est-ce comme cela ?

edit : pour clarifier les choses, quand je parle de fluidité, je parle principalement du défilement, entre les pages, dans les menus mais surtout sur le web. Bien entendu, Android est un OS fluide, je ne dis pas le contraire, mais il y a de nombreuses situations où iOS et Windows Phone possèdent un défilement plus « rapide », « réactif ». Essayez d’enlever votre casquette « fanboy » (si vous l’êtes) quand vous lisez ceci, et puis n’hésitez pas à aller plus loin en consultant les articles postés initialement sur Google+ (les liens sont juste après).

Je n’ai pas l’ambition d’arriver à vous expliquer les choses dans les moindres détails, je n’ai pas le bagage technique pour, mais je peux vous donner un début d’explication d’après ce que j’ai compris (et ce que j’ai lu interprété par des journalistes plus techniques que moi). Je vous conseille bien entendu, si vous souhaitez aller plus loin, de lire ces deux posts, par Dianne Hackborn (travaille pour Google sur Android) et par Andrew Munn (étudiant en 3e année pour devenir ingénieur, a fait un stage chez Google sur Android, rejoint bientôt Microsoft pour un stage Windows Phone).


L’accélération matérielle n’est pas la solution miracle

Commençons par l’accélération matérielle dans l’interface sous Android (utilisation du GPU du mobile en complément du CPU). Nous en entendons parler en ce moment car c’est une option qu’il est possible d’activer dans ICS. Dianne Hackborn nous explique que cette option est présente dans Android depuis la toute première version, mais à différents niveaux. Dans la 1.0, l’accélération matérielle concernant essentiellement les éléments comme le tiroir des notifications, les pop-up de notification, ce genre de chose, depuis la 3.0, c’est une fonctionnalité présente dans toute l’interface. Dans ICS, elle est présente mais doit être activée ou bien déterminée par le développeur de l’app.

L’accélération matérielle permet de rendre l’interface plus fluide, mais n’est pas une solution miracle. En effet, lorsque celle-ci se met en place, la quantité de RAM utilisée en contrepartie est bien trop importante par rapport au résultat, en clair ce n’est pas vraiment rentable. De plus, tout dépend également de la puissance du GPU, sur un terminal comme le Galaxy Nexus ou le SGS2, cette option peut avoir un impact positif largement intéressant, sur des terminaux plus « anciens », comme le Nexus S, c’est une autre histoire.

Bon, donc l’accélération matérielle n’est pas la solution miracle au problème de fluidité sous Android, mais pourquoi est-ce comme cela et peut-on changer la situation ?

C’est une question de culture. Dès le début, Apple a pensé iOS pour donner la priorité max à l’interface quand elle est utilisée. C’est une philosophie adoptée par Apple et transmise aux développeurs qui prennent soin, pour iPhone, de développer leurs app en ayant en tête cette donnée. Cela signifie que dans la grande majorité des cas, sur un iPhone, quand vous interagissez avec l’écran, le système met en pause toutes les autres activités en cours afin de se focaliser sur l’interface. D’où un résultat extrêmement fluide, et cela depuis les premiers iPhones/iPod touch. Même principe pour Windows Phone.

Lors de mes différents tests, j’ai constaté cela de manière très marquée lors de la navigation sur le web. Sous iOS, quand vous défilez, vous avez des zones non chargées qui s’affichent avec un damier. Quand vous zoomez, l’image est retraitée après avoir effectué l’action. Sous Windows Phone, même chose, quand vous défilez rapidement sur une page, tout est très fluide mais vous avez des zones blanches, qui s’affichent, même si vous avez déjà été « voir » cet emplacement sur la page. De l’autre côté, sous Android, quand vous naviguez sur le web le défilement est systématiquement moins fluide mais quand vous défilez tout charge en parallèle, en même temps. Parfois quand la page charge, vous ne pouvez pas défiler ou bien l’interaction est lente, mais vous n’avez pas d’effet de damier.

Priorité à l’interface vs. traitement simultané

C’est là la grosse différence entre ces 3 systèmes : iOS et Windows Phone donnent la priorité absolue à l’interface, Android essaie de faire les deux en même temps.

Cette façon de procéder, sous Android, existe depuis les toutes premières versions, quand l’OS a été pensé non pas pour concurrencer iOS (qui n’existait pas encore, aux yeux du grand public) mais BlackBerry sur des terminaux non tactiles. D’ailleurs la toute première version d’Android n’a pas été initialement pensée pour le tactile, c’est peu de temps après qu’elle a été adaptée.

Ré-écrire le framework de rendu ?

Alors comment atteindre 60 images par seconde dans nos interfaces Android, de façon stable et permanente ? La réponse d’Andrew Munn à ce sujet est claire : il faut réécrire le framework de rendu de l’interface. Le problème, c’est que cette solution semble simplement inenvisageable pour Android. Comme l’explique d’ailleurs Romain Guy (Android) :

« …une majorité du travail que nous avons à réaliser aujourd’hui est dû à des décisions prises dans le passé, il y a des années. Le plus gros problème est la gestion des animations dans l’interface. Nous sommes en train de travailler sur des solutions afin d’améliorer cela. Une solution « facile » serait de créer un nouveau toolkit pour l’interface mais il y a trop de contraintes liées à cela« .

D’après Andrew, les contraintes seraient les suivantes, et pas des moindres : toutes les apps devrait être ré-écrites par les développeurs afin de supporter le nouveau framework, de ce fait, un mode « legacy » (moteur alternatif présent dans l’OS afin de faire tout de même tourner, pendant un temps, les anciennes apps) devrait être intégré à l’OS. De plus, pendant tout le développement de ce nouveau framework (un énorme changement à la racine même de l’OS), Android ne pourrait pas vraiment évoluer (problème de ressources mais surtout problème de hiérarchie, comment avancer sur des fonctionnalités du système alors que la base même de l’OS est en train d’être retravaillée ?).

Mais Andrew estime que malgré ces contraintes lourdes, Android est un OS qui mérite (et a besoin) ce temps de développement et ce sacrifice, dans le but de rester un OS compétitif sur le long terme. Car, avec le temps, ce problème de fluidité ne va pas aller en s’arrangeant. Bien sûr, des puces plus puissantes (CPU, GPU, plus de RAM) permettent de mettre une rustine sur le problème initial, mais comme les apps deviennent plus lourdes, les jeux plus gourmands et les sites plus complexes à afficher, ce pansement hardware ne pourra pas suivre sur le long terme.

L’autre jour un membre de ma famille m’a dit : « j’ai essayé l’iPad 2, j’ai essayé la Galaxy Tab 10.1 en magasin, ça n’a rien à voir ». C’est le ressenti qui prime, quelle interface est la plus rapide à l’utilisation ? Cela ne signifie pas qu’Android n’est pas capable de calculer plus rapidement qu’iOS et Windows Phone, c’est d’ailleurs souvent Android qui domine en puissance brute, mais il ne faut jamais oublier que la première impression est importante, que ces quelques instants où une personne manipule l’interface et se fait un avis (c’est rapide ou non ?) sont très importants.

Note : attention, je ne suis pas en train de dire qu’Android est lent, bien au contraire, je vous explique simplement la situation aujourd’hui et pourquoi, dans de nombreuses situations, la fluidité n’est pas la même à l’utilisation des différents systèmes. Je pense qu’Android est une excellente plateforme, une des meilleures si ce n’est la meilleure sur la marché. Mais ça vous le saviez déjà.

via redmondpie

sources Google+, 1 et 2

Accès directs

Systèmes d'exploitation :

Android, IOS, Windows Phone

Tags :

Editorial