


**Introduction**
La performance du défilement est un élément crucial pour l’expérience utilisateur sur mobile. Chrome sur Android a récemment amélioré son défilement de 2x en réduisant les sauts visuels et les saccades à l’écran. Cet article explore la démarche entreprise pour identifier et résoudre les problèmes à l’origine de cette amélioration.
**Identification du problème**
En comparant Chrome sur différentes plateformes, il a été constaté que le défilement sur Chrome iOS était fluide et constant, tandis que sur Android, le défilement suivait moins précisément le mouvement du doigt. Les métriques indiquaient des saccades occasionnelles, mais elles n’étaient pas aussi fréquentes qu’il semblait.
**Analyse du débit d’entrée**
Chrome utilise un rééchantillonnage pour prédire où le doigt se trouve à un moment donné par rapport à la trame à produire. Cependant, une analyse plus approfondie a révélé que le débit d’entrée était souvent irrégulier, ce qui entraînait des décalages incohérents du contenu à l’écran, même lors d’un défilement à vitesse constante.
**Réimplémentation de l’algorithme de rééchantillonnage**
Android avait implémenté plusieurs algorithmes de rééchantillonnage et avait conclu que le rééchantillonnage linéaire était suffisant. Cependant, Chrome utilisait un tampon non amorti et avait des exigences différentes.
En utilisant l’heure de l’événement MotionEvent au lieu de la milliseconde, en sélectionnant soigneusement les événements d’entrée et en implémentant le filtre « 1€ », Chrome a considérablement amélioré l’expérience de défilement.
**Résultats et perspectives**
Les métriques montrent une réduction de 2x des saccades visibles lors d’un défilement lent. Cette amélioration est en cours de déploiement dans Chrome pour Android, ce qui le mettra au niveau de Chrome sur iOS.
Cette démarche souligne l’importance de l’analyse approfondie pour identifier les problèmes et de la recherche de solutions alternatives pour améliorer l’expérience utilisateur.
**Mots-clés :** Défilement, Chrome, Android, Rééchantillonnage, Expérience utilisateur, Fluence
