Repository navigation
Reporte Perfilamiento App3
Fecha de Análisis: 19 de mayo de 2025
Dispositivo de Prueba: Pixel 7 – Android API 36
Herramientas Utilizadas: Android Studio Profiler (CPU, Threads, Memory, VSync tracing)
Nombre del Proyecto: vinilos
✔ Metodología
Se utilizó el Android Studio Profiler para monitorear el uso de CPU, cantidad y actividad de hilos durante la ejecución normal de la aplicación.

📌 Observaciones Principales
- Uso de CPU mayormente bajo con un pico al inicio (~28s), sin alcanzar el 100%.
- Se detectaron 42 hilos activos, cifra elevada para una app promedio, indicando posible sobrecarga o mala gestión de concurrencia.
- Hilos destacados incluyen
RenderThread,example.vinilos(hilo principal) y varios hilos de red (OkHttp,ConscriptStats,DefaultDispatchers).
✅ Recomendaciones
- Revisar y limitar la creación excesiva de hilos.
- Externalizar tareas pesadas del hilo principal usando coroutines o servicios en segundo plano.
- Utilizar StrictMode para detectar operaciones bloqueantes en el hilo UI.
✔ Metodología
Se empleó la función “CPU Profiler” para identificar métodos con mayor consumo de tiempo CPU, enfocándose en la pila de llamadas.

📌 Observaciones Principales
- El método
nativePollOnce()dentro del cicloloopOnce()deandroid.os.Looperconsume tiempo significativo. - Funciones relacionadas con eventos de interfaz (
dispatchInputEvent,dispatchVsync) también tienen alta actividad. - Se evidencian procesos intensivos en el hilo principal, posiblemente afectando la fluidez.
✅ Recomendaciones
- Revisar callbacks y eventos de UI para externalizar operaciones pesadas.
- Optimizar manejo de eventos y sincronización de pantalla.
✔ Metodología
Uso de análisis de frames y trazado VSync para detectar cuadros janky (con retrasos >16 ms).

📌 Observaciones Principales
- Numerosos frames janky que afectan la fluidez (menos de 60 fps).
- El hilo
glide-source-thconsume más del 400% del tiempo de CPU, destacando la carga de procesamiento de imágenes con Glide. - Métodos intensivos:
decodeBitmap,Bitmap.compress, bloqueos por concurrencia (lock contention).
✅ Recomendaciones
- Optimizar cargas de imágenes con Glide, usar caché,
thumbnail(), y reducir resoluciones innecesarias. - Evitar compresión o decodificación repetida de imágenes.
✔ Metodología
Se habilitó la guía VSync para visualizar la sincronización del renderizado entre hilos.

📌 Observaciones Principales
- Fragmentación del trabajo entre
RenderThready el hilo principalexample.vinilos. - Interrupciones y bloqueos detectados que causan jank en renderizado.
✅ Recomendaciones
- Descargar trabajo pesado del hilo principal a otros hilos o coroutines.
- Priorizar operaciones críticas para la fluidez de UI.
✔ Metodología
Revisión de métodos con mayor consumo de CPU y análisis de bloqueos en hilos.

📌 Observaciones Principales
- Métodos Glide dominan el consumo CPU (
load/engine/decodeBitmap). - Repetidos bloqueos por acceso concurrente (
lock contention). - Actividad del recolector de basura (GC) visible, con funciones como
Marking thread roots.
✅ Recomendaciones
- Reducir concurrencia en acceso a recursos compartidos.
- Evaluar optimización o reemplazo de carga de imágenes.
- Optimizar gestión de memoria para reducir presión de GC.
| Aspecto Analizado | Resultado / Estado | Recomendaciones |
|---|---|---|
| Uso de CPU y Hilos | Uso CPU aceptable, pero 42 hilos activos | Limitar creación de hilos y externalizar carga |
| Cuellos de Botella CPU | Métodos UI y polling consumen tiempo significativo | Optimizar eventos UI y callbacks |
| Carga de Imágenes (Glide) | Cuello de botella fuerte en procesamiento de imágenes | Optimizar Glide, cachés, y resoluciones |
| Renderizado y VSync | Fragmentación y jank visibles | Descargar lógica pesada fuera del hilo UI |
| Gestión de Memoria y Bloqueos | Bloqueos concurrentes y actividad GC alta | Reducir bloqueos, mejorar gestión memoria |
- StrictMode: para detectar operaciones bloqueantes en UI thread.
- Memory Profiler: para monitoreo en tiempo real de uso de memoria.
- Systrace / Perfetto: para análisis detallado de sincronización y rendimiento.
- LeakCanary: para detección de fugas de memoria.
- Uso de coroutines: para optimización de hilos y tareas asíncronas.
- Retrospectiva - Incepción
- Diseño Arquitectónico
- APK V1.0.2
- Estrategia de pruebas
- Inventario de pruebas
- Resultado de la Estrategia de pruebas
- Reunión semana 4
- Retrospectiva Iteración 1
- Diseño Arquitectónico
- APK V1.0.4
- Estrategia de pruebas
- Inventario de pruebas
- Resultado de la Estrategia de pruebas
- Reporte del Perfilamiento de la aplicación
- Micro-Optimizaciones Implementadas
- Reunión semana 5
- Reunión semana 6
- Gráfica de Velocidad - Iteración 1
- Reflexión sobre la Estimación - Iteración 1
- Retrospectiva Iteración 2
- Diseño Arquitectónico
- APK V1.0.5
- Estrategia de pruebas
- Inventario de pruebas
- Resultado de la Estrategia de pruebas
- Reporte del Perfilamiento de la aplicación
- Micro-Optimizaciones Implementadas
- Reunión semana 7
- Reunión semana 8
- Gráfica de Velocidad - Iteración 2
- Reflexión sobre la Estimación - Iteración 2
- Reporte de accesibilidad