Casos de éxito

Monzo aumenta las métricas de rendimiento hasta un 35% con una simple actualización de R8

Lectura de 2 min
Ben Weiss
Ingeniero de Relaciones con Desarrolladores

Monzo es un banco digital del Reino Unido con 15 millones de clientes y en crecimiento. A medida que la app crecía, el equipo de ingeniería identificó el tiempo de inicio de la app como un área fundamental para mejorar, pero le preocupaba que requiriera cambios significativos en su base de código.

Al habilitar por completo las optimizaciones de R8, Monzo logró una reducción masiva del 35% en su tasa de Application Not Responding (ANR). Este simple cambio demostró que las optimizaciones impactantes no siempre requieren esfuerzos de ingeniería complejos.

Cómo obtener grandes beneficios de rendimiento con el modo completo de R8

Monzo identificó el modo completo de R8 como una solución fácil que valía la pena probar. Funcionó y mejoró el rendimiento en todos los aspectos:

  • Confiabilidad del inicio: Los inicios en frío mejoraron un 30%, los inicios en caliente un 24% y los inicios en caliente un 14%.
  • Velocidad de inicio: Los tiempos de inicio de P50 mejoraron un 11% y los tiempos de inicio de P90 un 12%.
  • Eficiencia: El tamaño general de la app se redujo en un 9%.
  • Estabilidad: Reducción de ANR del 35%.
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

Cómo habilitar optimizaciones con un solo cambio

Muchas apps para Android usan un archivo de configuración predeterminado desactualizado que inhabilita la mayoría de las funciones del optimizador de R8. El cambio principal que realizó Monzo para desbloquear estas mejoras de rendimiento fue reemplazar el archivo predeterminado proguard-android.txt por proguard-android-optimize.txt. Este cambio quita la instrucción -dontoptimize y permite que R8 haga su trabajo correctamente.

buildTypes {
  release {
    isMinifyEnabled = true
    isShrinkResources = true
    proguardFiles(
      getDefaultProguardFile("proguard-android-optimize.txt"),
    )
  }
}

Después de realizar este cambio, vale la pena consultar los archivos de configuración de Keep. Estos archivos le indican a R8 qué partes del código debe dejar solas (por lo general, porque se llaman de forma dinámica o mediante bibliotecas externas). Limpiar las reglas de Keep innecesarias significa que R8 puede hacer más.

Cómo mejorar el rendimiento del desplazamiento con los perfiles de Baseline

Para mejorar aún más la experiencia del usuario, Monzo implementó los perfiles de Baseline, específicamente para mejorar el rendimiento del desplazamiento y la renderización en su feed principal. Esta estrategia garantizó que los recorridos del usuario más comunes (abrir la app y desplazarse por el feed) estuvieran completamente optimizados. El impacto en la renderización fue considerable: el rendimiento del desplazamiento de P90 se volvió un 71% más rápido, y el rendimiento del desplazamiento de P95 mejoró un 87%. Ahora, desplazarse por la app es más fluido que antes.

Monzo incorporó esto en su proceso de lanzamiento para mantener estas mejoras a lo largo del tiempo. "Activamos la generación de perfiles de Baseline todos los días de la semana (antes de ejecutar nuestras compilaciones nocturnas) y confirmamos los cambios más recientes una vez que se completan", explica Neumayer.

Mantente al día con el desarrollo moderno de Android

La experiencia de Monzo muestra lo que es posible cuando te mantienes actualizado con las recomendaciones de las herramientas de compilación de Android. Si bien las apps heredadas suelen tener problemas con el uso complejo de la reflexión, Monzo encontró que la transición era sencilla al documentar correctamente sus reglas de Keep. "Siempre agregamos un comentario que explica por qué se implementan las reglas de Keep, de modo que sabemos cuándo es seguro quitar las reglas", señala Neumayer.

¿El consejo de Neumayer para otros equipos? Revisa periódicamente tus prácticas en función de los estándares actuales: "Consulta las recomendaciones más recientes de Google sobre el rendimiento de las apps y verifica si sigues todos los consejos más recientes".

Para comenzar y obtener más información sobre R8, visita https://d.android.com/r8

Escrito por:

Seguir leyendo