Back home

SwiftUI Series 13|Optimisation des performances SwiftUI : méthodes d'écriture qui bloquent facilement la page

De nombreux problèmes de performances de SwiftUI sont causés par la granularité de l'état, le timing des calculs et la portée de la mise à jour de la vue qui devient incontrôlable.

En ce qui concerne les performances de SwiftUI, deux jugements extrêmes apparaissent le plus souvent :

  • “SwiftUI est intrinsèquement lent”
  • “SwiftUI fonctionne parfaitement, mais je ne peux pas écrire”

Ces deux déclarations sont trop grossières.

Dans les projets réels, de nombreux problèmes de performances de SwiftUI sont en effet causés par ces éléments qui deviennent incontrôlables :

  • La granularité de la mise à jour du statut est trop grande
  • La hiérarchie des vues est trop profonde
  • Le calcul est placé sur le chemin fréquemment actualisé
  • Les coûts des liens vers les listes et les images sont trop élevés

Donc, ce que vous devez vraiment demander, c’est :

Un petit changement dans la page entraîne-t-il un recalcul et un redessin beaucoup plus volumineux que nécessaire ?

1. La cause première la plus courante des problèmes de performances de SwiftUI est que la portée de la mise à jour est trop grande

De nombreuses pages sont bloquées. En apparence, il semble qu’un certain composant soit lourd, mais en réalité il est plus proche :

  • Un changement d’état local
  • mais permet à une grande partie de l’interface de re-participer aux calculs

Ceci est particulièrement important dans les interfaces utilisateur déclaratives. Parce qu’il est dit “recalculer la description actuelle après les changements de statut”.

Si les frontières des États et celles des composants ne sont pas alignées, de petits changements se transformeront en mises à jour à grande échelle.

2. Placer des calculs coûteux sur un chemin fréquemment actualisé est l’une des mauvaises odeurs les plus courantes.

Par exemple :

  • Effectuer un formatage complexe dans body
  • Effectuer une conversion de données importante pendant la construction de la vue
  • Reconstruisez des modèles d’affichage complexes à chaque fois que vous actualisez

Ces éléments ne sont pas visibles lorsque la quantité de données est faible. Une fois la page actualisée fréquemment, le coût sera rapidement amplifié.

3. Les listes et les images amplifient presque toujours les problèmes de performances de SwiftUI

Parce que les deux scénarios permettront :

  • Fréquence de rafraîchissement plus élevée
  • Plus de vues
  • Le fil principal est soumis à une plus grande pression

Si la granularité de l’état n’est pas suffisamment fine, la page perdra facilement des images.

4. Conclusion : La page SwiftUI reste bloquée, ce qui est généralement lié à la perte de la granularité de la mise à jour, du timing des calculs et des limites de vue.

Pour le dire sous une forme plus courte, je dirais :

Les causes profondes les plus courantes des problèmes de performances de SwiftUI sont de laisser les changements d’état affecter trop la portée, de permettre des calculs coûteux sur des chemins d’actualisation à haute fréquence et de ne pas fermer les limites des pages.

Par conséquent, la direction d’optimisation vraiment efficace consiste généralement à réduire la portée de l’influence, plutôt que de remettre en question l’ensemble du cadre dès le début.

FAQ

What to read next

Related

Continue reading