Metri di Prestazione che Contano
| Metrica | Obiettivo | Impatto |
|---|---|---|
| Tempo di Avvio | < 2s avvio freddo | Conservazione dell'utente |
| Frequenza di Raffrazzamento | 60fps costante | Percezione di fluidità |
| Utilizzo della Memoria | < 150MB media | Prevenzione di crash |
| Impatto sulla Batteria | < 5% per ora attiva | Soddisfazione dell'utente |
Optimizzazione della Rendering
Optimizzazione di FlatList
Per liste lunghe, una configurazione corretta di FlatList è critica per lo scrolling fluido.
<FlatList
data={items}
renderItem={renderItem}
keyExtractor={item => item.id}
getItemLayout={(data, index) => ({
length: ITEM_HEIGHT,
offset: ITEM_HEIGHT * index,
index
})}
removeClippedSubviews={true}
maxToRenderPerBatch={10}
windowSize={5}
/>Optimizzazione delle Immagini
- Utilizza il formato WebP per file più piccoli del 25-35%
- Implementa il caricamento progressivo con placeholder sfocati
- Cache con aggressività e con validazione corretta
- Ridimensiona le immagini per diverse densità dello schermo
Gestione della Memoria
// Evita i leak di memoria — pulisci sempre le sottoscrizioni
useEffect(() => {
const subscription = AppState.addEventListener('change', handler);
return () => subscription.remove();
}, []);
// Utilizza il caricamento lazy per componenti pesanti
const HeavyComponent = React.lazy(() => import('./HeavyComponent'));Efficienza della Batteria
- Batch le richieste di rete invece di molte piccole
- Utilizza il fetch in background invece del polling continuo
- Implementa strategie di aggiornamento della posizione corrette
- Minimizza l'uso dei sensori quando non necessario
Strumenti di Profilazione
- React Native: Flipper, React DevTools Profiler
- Flutter: DevTools, Timeline view
- iOS: Instruments, Xcode Energy Log
- Android: Android Studio Profiler, Systrace