SwiftUI Series 13|Otimização de desempenho do SwiftUI: métodos de escrita que facilmente fazem com que a página fique presa
Muitos problemas de desempenho do SwiftUI são causados pela granularidade do estado, tempo de cálculo e escopo de atualização da visualização ficando fora de controle
Quando se trata do desempenho do SwiftUI, dois julgamentos extremos aparecem com mais frequência:
- “SwiftUI é inerentemente lento”
- “SwiftUI está absolutamente bem, mas não consigo escrever”
Ambas as afirmações são demasiado grosseiras.
Em projetos reais, muitos problemas de desempenho do SwiftUI são de fato causados por essas coisas que ficam fora de controle juntas:
- A granularidade da atualização de status é muito grande
- A hierarquia de visualização é muito profunda
- O cálculo é colocado no caminho atualizado com frequência
- Os custos de links de listas e imagens são muito altos
Então o que você realmente precisa perguntar é:
Uma pequena alteração na página está causando recálculo e redesenho muito maiores do que o necessário?
1. A causa raiz mais comum dos problemas de desempenho do SwiftUI é que o escopo da atualização é muito grande
Muitas páginas estão travadas. Superficialmente, parece que um determinado componente é pesado, mas na realidade está mais próximo:
- Uma mudança de estado local
- mas permite que uma grande área da interface participe novamente dos cálculos
Isto é especialmente importante em UIs declarativas. Porque diz “recalcular a descrição atual após a mudança de status”.
Se os limites do estado e dos componentes não estiverem alinhados, pequenas mudanças se transformarão em atualizações em grande escala.
2. Colocar cálculos de alto custo no caminho atualizado com frequência é um dos maus cheiros mais comuns.
Por exemplo:
- Faça formatação complexa em
body - Faça conversões pesadas de dados durante a construção da visualização
- Reconstrua modelos de exibição complexos sempre que atualizar
Essas coisas não são visíveis quando a quantidade de dados é pequena. Depois que a página for atualizada com frequência, o custo será rapidamente ampliado.
3. Listas e imagens quase sempre amplificam os problemas de desempenho do SwiftUI
Porque ambos os cenários permitirão:
- Maior frequência de atualização
- Mais visualizações
- A linha principal está sob maior pressão
Se a granularidade do estado não for suficientemente boa, a página eliminará facilmente os frames.
4. Conclusão: A página SwiftUI fica travada, o que geralmente está relacionado à perda de granularidade de atualização, tempo de cálculo e limites de visualização.
Para resumir, eu diria:
As causas mais comuns dos problemas de desempenho do SwiftUI são permitir que as mudanças de estado afetem demais o escopo, permitindo que cálculos de alto custo ocorram em caminhos de atualização de alta frequência e não fechando os limites da página.
Portanto, a direção de otimização verdadeiramente eficaz é geralmente estreitar o escopo de influência, em vez de duvidar de toda a estrutura desde o início.
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