La longue et lente poussée pour que les téléphones démarrent plus rapidement
Si vous avez démarré le HTC Dream original ou Samsung Galaxy aujourd'hui, vous pourriez sentir qu'il était coincé dans une boucle de démarrage. À l'époque, les téléphones Android prendraient une minute ou deux pour démarrer après un arrêt. Aujourd'hui, les téléphones prennent quelques secondes pour démarrer. Permettez-moi de partager les façons fascinantes et intelligentes dont les fabricants de téléphones ont réussi.
Sommaire
Les téléphones prenaient des minutes pour démarrer
Il y a environ 12 ou 15 ans, même les téléphones phares comme le Nexus One ou le Samsung Galaxy S ont pris environ 45 à 120 secondes pour démarrer complètement à partir d'un démarrage à froid (après avoir retiré la batterie ou un arrêt complet). Même après avoir atteint l'écran d'accueil, les icônes de l'application prendraient leur temps doux pour apparaître. Vous ressentiriez un décalage si vous essayiez d'interagir avec l'écran avant cela.
C'est encore plus rapide que les téléphones moins chers de ces jours, lorsque les bottes à froid ont généralement pris environ 120 secondes. Parfois, ils étaient restés coincés dans l'animation de démarrage, et vous deviez retirer la batterie et le redémarrer juste pour résoudre ce problème.
Aujourd'hui, le dernier Samsung Galaxy Ultra prend moins de 10 secondes pour démarrer, et une fois que vous atteignez l'écran principal, il est entièrement utilisable sans aucun décalage. Les téléphones plus anciens avaient naturellement des ressources plus faibles pour travailler, souvent quelques centaines de mégaoctets de RAM et de processeurs sous-alimentés. C'est en partie pourquoi ils ont mis si longtemps à démarrer, mais le système de démarrage d'Android lui-même a été mal conçu et optimisé.
Le premier morceau de code qui s'exécute sur une machine lorsque vous appuyez sur le bouton d'alimentation est le chargeur de démarrage. Le chargeur de démarrage est responsable de la vérification du matériel et du chargement d'une version « compressée » du système d'exploitation dans la mémoire. La version compressée doit être décompressée avant qu'elle ne soit chargée.
Une fois que le chargeur de démarrage a déballé le système d'exploitation, il démarre certaines fonctionnalités de base comme les pilotes matériels. Le système d'exploitation complet n'a pas encore chargé. Ce n'est que le noyau – une sorte de fondation au-dessus de laquelle se trouve le système d'exploitation complet. Tout au long de ce processus, des versions plus anciennes d'Android ont été constamment enregistrées pour les erreurs, ce qui a ralenti les choses davantage.
Vient ensuite l'espace utilisateur (où toutes les applications et services réguliers s'exécutent), lancés par des fichiers init.rc, qui ne sont qu'une liste de programmes qui doivent être chargés. Android Version 1 et Version 2 avaient d'énormes fichiers init.rc qui ont lancé des programmes qui n'avaient même pas besoin de démarrer et pire, ces anciennes versions ont chargé ces programmes un par un.
Apple a pris une route différente
Le système d'exploitation Android doit fonctionner sur toutes sortes de facteurs matériels et de formulaire, il n'a donc pas le contrôle qu'Apple fait sur l'iPhone. Apple contrôle la pile complète (du matériel au logiciel et tout entre les deux), afin qu'il puisse concevoir et optimiser pour le matériel spécifique sur lequel le système d'exploitation fonctionnera.
Même dans les premières versions de l'iPhone, les temps de démarrage étaient bien plus rapides que les téléphones Android. L'iPhone d'origine pourrait démarrer en moins de 30 secondes, et les iPhones modernes sont encore plus rapides.
Les optimisations de démarrage modernes réduisent le temps en secondes
Le processus de démarrage d'origine d'Android avait plusieurs goulots d'étranglement, comme nous venons de le voir.
Avec Android Jellybean (version 4), Android a introduit une fonctionnalité de bootchart, qui a permis aux développeurs de visualiser le processus de démarrage et de trouver ces goulots d'étranglement. Ils ont utilisé ces indices pour couper la journalisation verbale pour enregistrer uniquement les erreurs critiques. BootChart a également aidé à redémarrer les services de démarrage. Ces programmes non essentiels ont été retardés pour gagner du temps de démarrage. Certains ont été entièrement laissés entièrement. Par exemple, au lieu de charger chaque pilote, le système d'exploitation n'a chargé que des pilotes pour le matériel disponible.
Vous vous souvenez de ces fichiers de configuration init qui ont chargé les programmes un par un? Android Lollipop (version 5) permettrait à ces programmes se charger en parallèle, pas séquentiellement. Cela a également fait gagner du temps. D'ici là, Google avait également introduit la nouvelle conception d'interface utilisateur de matériaux construite sur une nouvelle pile graphique. Il a rendu le téléphone plus réactif directement après les redémarrages à froid.
En commençant par Android Oreo (version 8), le système d'exploitation est passé à un algorithme de décompression plus rapide (LZ4), ce qui a permis au chargeur de démarrage de déballer le noyau plus rapidement. L'animation de démarrage a également été optimisée, ainsi que quelques autres améliorations du processus de démarrage. Google a déclaré que Android Oreo bottise deux fois plus vite que la version 7.
Les peaux et les ballonnements OEM peuvent ralentir les choses
Android 15 prend environ 12 à 15 secondes pour démarrer, tout comme Android 14, au moins sur les appareils Pixel. Les versions modernes d'Android ne démarrent pas à froid à moins que le système ne s'arrête complètement (par exemple, lorsque la batterie se draine à 0%). Si vous maintenez le bouton d'alimentation juste pour redémarrer le téléphone, il sera en place et réactif 50% plus rapidement qu'un démarrage froid. En effet, ils enregistrent l'état du système en mémoire, donc le système d'exploitation n'a pas à se réinitialiser pleinement sur un redémarrage.
Tout cela est vrai pour les stocks ou les stocks Android, mais pour la plupart d'entre nous, les OEM modifient fortement Android avec des skins personnalisés et des services préinstallés. Ces programmes de bloatware ne commencent généralement pas de manière parallèle comme le font les services de stock, donc cela ajoute du temps au processus de démarrage.
Android a finalement rattrapé l'iPhone en termes de vitesse de démarrage. Si un tout nouveau téléphone prend plus de 20 secondes pour démarrer, c'est probablement à cause de la s'enlige des bloatwares.
