La prestazione è esperienza. Le app lente sono frustranti e vengono abbandonate. Questa guida presenta le tecniche per ottimizzare le prestazioni nelle applicazioni iOS e Android.
Perché le prestazioni sono importanti
Esperienza
60fps è l'aspettativa. Jank è inaccettabile.
Conservazione
Le app lente vengono disinstallate.
Conversione
Ogni secondo di ritardo riduce la conversione.
###App Store
Le valutazioni menzionano spesso le prestazioni.
Metriche delle prestazioni
È ora di interagire
Quanto tempo manca alla risposta dell'app.
Frequenza fotogrammi
60 fps = 16 ms per fotogramma.
Utilizzo della memoria
Consumo di RAM.
Batteria scarica
Impatto sulla batteria.
Dimensioni dell'app
Dimensioni di download e installazione.
Profilazione
###iOS
Strumenti, Xcode Profiler.
###Android
Profilo di Android Studio, systrace.
Cosa misurare
CPU, memoria, rete, GPU, potenza.
Ottimizzazione dell'avvio
Partenza a freddo
L'app inizia da zero. Il più lento.
Inizio caldo
Il processo esiste, l'attività si ricrea.
Inizio caldo
L'attività esiste, fatevi avanti.
Tecniche
- Inizializzazione pigra
- Differire non essenziali
- Schermata iniziale efficiente
- Profili di base (Android)
Prestazioni dell'interfaccia utente
60 FPS
16ms per eseguire il rendering di ciascun fotogramma.
Discussione principale
Interfaccia utente solo sul thread principale.
Operazioni costose
Offload per thread in background.
Ottimizzazione del layout
Gerarchie piatte, visualizzazioni riciclate.
Gestione della memoria
Perdite
Oggetti non rilasciati. Strumenti/LeakCanary.
Oggetti di grandi dimensioni
Immagini non ridimensionate.
Memorizzazione nella cache
Equilibrio tra memoria ed elaborazione.
Gestione della memoria insufficiente
Rilascia le risorse quando il sistema lo richiede.
Ottimizzazione dell'immagine
Dimensionamento
Carica nella dimensione richiesta.
###Formati
WebP, AVIF per il risparmio.
Caricamento lento
Carica quando visibile.
Memorizzazione nella cache
Memoria e cache del disco.
Biblioteche
Glide, Coil (Android), SDWebImage (iOS).
Ottimizzazione della rete
Riduci al minimo le richieste
Aggregato, batch.
Compressione
Gzip, Brotli.
Memorizzazione nella cache
Intestazioni della cache HTTP.
Precaricamento
Anticipare i dati necessari.
Impaginazione
Non caricare tutto in una volta.
Elenca le prestazioni
Riciclaggio
RecyclerView, UICollectionView.
Modello ViewHolder
Riutilizzare le visualizzazioni.
Impaginazione
Scorrimento infinito con caricamento.
Scorrimento fluido
Precaricamento, memorizzazione nella cache.
Lavoro in background
Filettatura
Coroutine (Kotlin), GCD (Swift).
Evita di bloccare
Filo principale libero.
Cancellazione
Annulla il lavoro non necessario.
Ottimizzazione della batteria
Posizione
Precisione minima richiesta.
Attiva i blocchi
Utilizzare e rilasciare rapidamente.
Sfondo
Ridurre al minimo il lavoro in background.
Sensori
Annulla la registrazione quando non in uso.
Dimensioni dell'app
###Risorse
Comprimi le immagini, rimuovi quelle inutilizzate.
Dipendenze
Solo ciò che è necessario.
Suddivisione del codice
Consegna su richiesta (Android).
Pacchetti di app
Play/App Store genera APK/IPA ottimizzati.
Prestazioni del database
Indici
Nelle domande frequenti.
Operazioni batch
Scritti di gruppo.
Query asincrone
Non bloccare l'interfaccia utente.
Dati stanza/nucleo
Utilizza gli ORM in modo efficiente.
Strumenti
###iOS
- Strumenti
- Grafico della memoria Xcode -Kit metrico
###Android
- Profilo di Android Studio
- LeakCanary
- Profili di base
Multipiattaforma
- Prestazioni Firebase
- Flipper
Test delle prestazioni
Benchmark
Misura le metriche in modo coerente.
Gamma di dispositivi
Test su dispositivi deboli.
Automatizzato
Test che rilevano regressioni.
Errori comuni
Ottimizzazione prematura
Ottimizzare il vero collo di bottiglia.
Perdite di memoria
Non rilevato durante lo sviluppo.
Blocco del thread principale
I/O sul thread principale.
Dimensioni delle immagini
Carica la risoluzione completa per le miniature.
Conclusione
Le prestazioni sono una caratteristica cruciale. Profilare prima di ottimizzare, concentrarsi sui colli di bottiglia reali e monitorare continuamente. Le app veloci mantengono gli utenti e generano recensioni migliori.
##Domande frequenti
1) Da dove iniziare l'ottimizzazione? Prima il profilo. Identificare il vero collo di bottiglia.
2) A quale frame rate dovresti puntare? 60 fps. 120 fps su dispositivi con aggiornamento elevato.
3) Sono frequenti le perdite di memoria? Più di quanto immagini. Utilizza strumenti di rilevamento.
4) La multipiattaforma influisce sulle prestazioni? Può. Flutter e React Native hanno un sovraccarico. Ma sono ottimizzabili.
5) Come testare le prestazioni? Dispositivi reali, soprattutto quelli più deboli.
Leggi anche
- Consumo della batteria nelle app: come ottimizzare le prestazioni dei dispositivi mobili
- Ottimizzazione delle prestazioni mobili - Esempi reali per principianti
- Sviluppo nativo per Android: guida completa con Kotlin
- Sviluppo iOS nativo: guida completa con Swift e SwiftUI
- Sviluppo nativo per Android: come eseguire i passaggi essenziali
- Sviluppo nativo per iOS: come scegliere per le startup
