Comprendre et améliorer les pe... Note

Comprendre et améliorer les performances de SwiftUI

En 2022, Airbnb a adopté SwiftUI, ce qui a amélioré la productivité des ingénieurs mais a introduit de nouveaux défis de performance. Pour résoudre ces problèmes, Airbnb a créé de nouveaux outils pour identifier et valider les modèles de code critiques en matière de performance. L'architecture des fonctionnalités de l'entreprise utilise des modèles d'interface utilisateur déclaratifs et des systèmes de flux de données unidirectionnels, ce qui a simplifié l'adoption de SwiftUI. Cependant, les fonctionnalités SwiftUI utilisant cette architecture n'ont pas fonctionné aussi bien que prévu, et la compréhension des caractéristiques de performance de SwiftUI est cruciale pour la création de fonctionnalités performantes. L'algorithme de "diffing" de vues de SwiftUI, qui détermine quand le corps d'une vue doit être réévalué, est souvent négligé et n'est pas officiellement documenté. L'algorithme compare chacune des propriétés stockées de la vue, mais des modèles de code courants peuvent le dérouter, entraînant des évaluations inutiles du corps de la vue. Pour résoudre ce problème, Airbnb a créé une nouvelle macro @Equatable qui génère des conformances Equatable pour les vues, permettant aux ingénieurs de décider sélectivement quelles propriétés doivent être comparées lors du "diffing". Cette approche garantit que les vues sont "diffables" et empêche les régressions de se glisser plus tard. De plus, Airbnb a implémenté une règle SwiftLint personnalisée pour aider les ingénieurs à identifier quand le corps d'une vue est trop complexe et doit être refactorisé en éléments plus petits et "diffables". En décomposant les vues en éléments plus petits, SwiftUI peut efficacement mettre à jour uniquement les parties de la vue qui ont réellement changé, maintenant ainsi les performances à mesure que les fonctionnalités deviennent plus complexes.
CdXz5zHNQW_IYTQREK32w.jpeg