El rendimiento es experiencia. Las aplicaciones lentas frustran y quedan abandonadas. Esta guía presenta técnicas para optimizar el rendimiento en aplicaciones de iOS y Android.
Por qué es importante el rendimiento
Experiencia
60 fps es la expectativa. Jank es inaceptable.
Retención
Las aplicaciones lentas se desinstalan.
Conversión
Cada segundo de retraso reduce la conversión.
Tienda de aplicaciones
Las calificaciones mencionan el desempeño con frecuencia.
Métricas de rendimiento
Es hora de interactuar
¿Cuánto tiempo hasta que la aplicación responda?
Velocidad de fotogramas
60 fps = 16 ms por cuadro.
Uso de memoria
Consumo de RAM.
Drenaje de batería
Impacto en la batería.
Tamaño de la aplicación
Tamaño de descarga e instalación.
Perfilado
iOS
Instrumentos, Xcode Profiler.
###Androide
Perfilador de Android Studio, systrace.
Qué medir
CPU, memoria, red, GPU, potencia.
Optimización de inicio
Arranque en frío
La aplicación comienza desde cero. El más lento.
Arranque en caliente
El proceso existe, la actividad se recrea.
Inicio en caliente
La actividad existe, adelante.
Técnicas
- Inicialización diferida
- Aplazar lo no esencial
- Pantalla de presentación eficiente
- Perfiles de referencia (Android)
Rendimiento de la interfaz de usuario
60 FPS
16 ms para renderizar cada fotograma.
Hilo principal
UI solo en el hilo principal.
Operaciones costosas
Descargar para hilos en segundo plano.
Optimización del diseño
Jerarquías planas, vistas recicladas.
Gestión de memoria
Fugas
Objetos no liberados. Instrumentos/LeakCanary.
Objetos grandes
Imágenes no redimensionadas.
Almacenamiento en caché
Equilibrio entre memoria y procesamiento.
Manejo de poca memoria
Liberar recursos cuando el sistema lo solicite.
Optimización de imagen
Tallas
Subir al tamaño requerido.
###Formatos
WebP, AVIF para ahorro.
Carga diferida
Cargue cuando esté visible.
Almacenamiento en caché
Memoria caché y disco.
Bibliotecas
Deslizamiento, Bobina (Android), SDWebImage (iOS).
Optimización de la red
Minimizar solicitudes
Agregado, lote.
Compresión
Gzip, Brotli.
Almacenamiento en caché
Encabezados de caché HTTP.
Captación previa
Anticipar los datos necesarios.
Paginación
No cargues todo a la vez.
Rendimiento de la lista
Reciclaje
RecicladorView, UICollectionView.
Patrón de soporte de vista
Reutilizar vistas.
Paginación
Desplazamiento infinito con carga.
Desplazamiento suave
Precarga, almacenamiento en caché.
Trabajo en segundo plano
Enhebrado
Corrutinas (Kotlin), GCD (Swift).
Evite el bloqueo
Hilo principal libre.
Cancelación
Cancelar trabajos innecesarios.
Optimización de la batería
Ubicación
Precisión mínima requerida.
Bloqueos de activación
Úselo y suéltelo rápidamente.
Antecedentes
Minimiza el trabajo en segundo plano.
Sensores
Darse de baja cuando no se utilice.
Tamaño de la aplicación
###Activos
Comprime imágenes, elimina las no utilizadas.
Dependencias
Sólo lo necesario.
División de código
Entrega bajo demanda (Android).
Paquetes de aplicaciones
Play/App Store genera APK/IPA optimizados.
Rendimiento de la base de datos
Índices
En consultas frecuentes.
Operaciones por lotes
Escritos grupales.
Consultas asíncronas
No bloquees la interfaz de usuario.
Datos de habitación/núcleo
Utilice ORM de manera eficiente.
Herramientas
iOS
- Instrumentos
- Gráfico de memoria Xcode
- Kit de métricas
###Androide
- Perfilador de Android Studio
- FugaCanario
- Perfiles de referencia
Multiplataforma
- Rendimiento de base de fuego
- Aleta
Pruebas de rendimiento
Puntos de referencia
Mida las métricas de manera consistente.
Rango de dispositivos
Pruebe en dispositivos débiles.
Automatizado
Pruebas que detectan regresiones.
Errores comunes
Optimización prematura
Optimice el verdadero cuello de botella.
Pérdidas de memoria
No detectado durante el desarrollo.
Bloqueo del hilo principal
E/S en el hilo principal.
Tamaños de imagen
Cargue resolución completa para miniaturas.
Conclusión
El rendimiento es una característica crucial. Perfile antes de optimizar, céntrese en cuellos de botella reales y monitoree continuamente. Las aplicaciones rápidas retienen a los usuarios y generan mejores reseñas.
##Preguntas frecuentes
1) ¿Dónde empezar a optimizar? Perfil primero. Identificar verdaderos cuellos de botella.
2) ¿A qué velocidad de fotogramas deberías aspirar? 60 fps. 120 fps en dispositivos con alta actualización.
3) ¿Son comunes las pérdidas de memoria? Más de lo que imaginas. Utilice herramientas de detección.
4) ¿La multiplataforma afecta el rendimiento? Puede. Flutter y React Native tienen gastos generales. Pero son optimizables.
5) ¿Cómo probar el rendimiento? Dispositivos reales, especialmente los más débiles.
Lea también
- Consumo de batería en aplicaciones: cómo optimizar el rendimiento móvil
- Optimización del rendimiento móvil: ejemplos reales para principiantes
- Desarrollo nativo de Android: Guía completa con Kotlin
- Desarrollo nativo de iOS: Guía completa con Swift y SwiftUI
- Desarrollo nativo de Android: cómo seguir pasos esenciales
- Desarrollo nativo de iOS: cómo elegir para empresas emergentes
