SwiftUI Series 13 | Optimización del rendimiento de SwiftUI: métodos de escritura que hacen que la página se bloquee fácilmente
Muchos problemas de rendimiento de SwiftUI se deben a que la granularidad del estado, el tiempo de cálculo y el alcance de la actualización de la vista se salen de control.
Cuando se trata del rendimiento de SwiftUI, con mayor frecuencia aparecen dos juicios extremos:
- “SwiftUI es inherentemente lento”
- “SwiftUI está absolutamente bien, pero no puedo escribir”
Ambas declaraciones son demasiado crudas.
En proyectos reales, muchos problemas de rendimiento de SwiftUI son causados por estas cosas que se salen de control juntas:
- La granularidad de la actualización de estado es demasiado grande.
- La jerarquía de vistas es demasiado profunda.
- El cálculo se coloca en la ruta que se actualiza con frecuencia.
- Los costos de listas y enlaces de imágenes son demasiado altos.
Entonces lo que realmente necesitas preguntar es:
¿Un pequeño cambio en la página provoca un recálculo y un rediseño mucho mayor de lo necesario?
1. La causa raíz más común de los problemas de rendimiento de SwiftUI es que el alcance de la actualización es demasiado grande
Muchas páginas están atascadas. En la superficie, parece que cierto componente es pesado, pero en realidad está más cerca:
- Un cambio de estado local
- pero permite que una gran área de la interfaz vuelva a participar en los cálculos
Esto es especialmente importante en las IU declarativas. Porque dice “volver a calcular la descripción actual después de que cambie el estado”.
Si los límites estatales y los límites de los componentes no están alineados, los pequeños cambios se amplificarán hasta convertirse en actualizaciones a gran escala.
2. Poner cálculos de alto costo en el camino que se actualiza con frecuencia es uno de los malos olores más comunes.
Por ejemplo:
- Realizar formateo complejo en
body - Realizar una gran conversión de datos durante la construcción de la vista.
- Reconstruya modelos de visualización complejos cada vez que actualice
Estas cosas no son visibles cuando la cantidad de datos es pequeña. Una vez que la página se actualice con frecuencia, el costo aumentará rápidamente.
3. Las listas e imágenes casi siempre amplifican los problemas de rendimiento de SwiftUI
Porque ambos escenarios permitirán:
- Mayor frecuencia de actualización
- Más vistas
- El hilo principal está bajo mayor presión.
Si la granularidad del estado no es lo suficientemente fina, la página perderá marcos fácilmente.
4. Conclusión: la página SwiftUI se atasca, lo que generalmente está relacionado con la pérdida de granularidad de actualización, tiempo de cálculo y límites de visualización.
Para decirlo en forma más breve, diría:
Las causas fundamentales más comunes de los problemas de rendimiento de SwiftUI son permitir que los cambios de estado afecten demasiado el alcance, permitir que se realicen cálculos de alto costo en rutas de actualización de alta frecuencia y no cerrar los límites de las páginas.
Por lo tanto, la dirección de optimización verdaderamente efectiva suele ser limitar el alcance de influencia, en lugar de dudar de todo el marco desde el principio.
What to read next
Want more posts about SwiftUI?
Posts in the same category are usually the best next step for reading more on this topic.
View same categoryWant to keep following #iOS?
Tags are useful for related tools, specific problems, and similar troubleshooting notes.
View same tagWant to explore another direction?
If you are not sure what to read next, return to the homepage and start from categories, topics, or latest updates.
Back home