Performance
Mobile
Otimização
App
iOS
Android

Ottimizzazione delle prestazioni mobili: guida completa

Ottimizzazione delle prestazioni mobili: guida completa

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