Estudos de caso

Monzo aumenta as métricas de performance em até 35% com uma simples atualização do R8

Leitura de 2 minutos
Ben Weiss
Engenheira de relações com desenvolvedores

O Monzo é um banco digital do Reino Unido com 15 milhões de clientes e crescendo. À medida que o app escalonava, a equipe de engenharia identificou o tempo de inicialização do app como uma área crítica para melhoria, mas se preocupou com a necessidade de mudanças significativas no codebase.

Ao ativar totalmente as otimizações do R8, o Monzo conseguiu uma redução de 35% na taxa de erros do tipo "O app não está respondendo" (ANR). Essa mudança simples provou que otimizações impactantes nem sempre exigem esforços complexos de engenharia.

Como aproveitar ao máximo o modo completo do R8 para melhorar a performance

A Monzo identificou o modo completo do R8 como uma correção fácil que valia a pena tentar. E funcionou, melhorando a performance em todos os aspectos:

  • Confiabilidade na inicialização:as inicializações a frio melhoraram em 30%, as inicializações a quente em 24% e as inicializações com estado salvo em 14%.
  • Velocidade de inicialização:os tempos de inicialização P50 melhoraram em 11%, e os tempos de inicialização P90, em 12%.
  • Eficiência:o tamanho geral do app foi reduzido em 9%.
  • Estabilidade:redução de 35% nos ANRs.
AANDDM_Monzo_Quote-1.png
large_AANDDM_Monzo_Quote-2.png

Ativar otimizações com uma única mudança

Muitos apps Android usam um arquivo de configuração padrão desatualizado que desativa a maioria das funcionalidades do otimizador R8. A principal mudança feita pelo Monzo para liberar essas melhorias de desempenho foi substituir o arquivo padrão proguard-android.txt por proguard-android-optimize.txt. Essa mudança remove a instrução -dontoptimize e permite que o R8 faça o trabalho corretamente.

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

Depois de fazer essa mudança, vale a pena conferir os arquivos de configuração do Keep. Esses arquivos informam ao R8 quais partes do código devem ser deixadas de lado (geralmente porque são chamadas dinamicamente ou por bibliotecas externas). Ao limpar regras Keep desnecessárias, o R8 pode fazer mais.

Melhorar o desempenho de rolagem com perfis de referência

Para melhorar ainda mais a experiência do usuário, o Monzo implementou perfis de referência, segmentando especificamente o desempenho de rolagem e renderização no feed principal. Essa estratégia garantiu que as jornadas do usuário mais comuns (abrir o app e rolar o feed) fossem totalmente otimizadas. O impacto na renderização foi substancial: o desempenho de rolagem P90 ficou 71% mais rápido, e o desempenho de rolagem P95 melhorou em 87%. Agora, rolar o app é mais suave do que antes.

O Monzo incorporou isso ao processo de lançamento para manter essas melhorias ao longo do tempo. "Acionamos a geração do perfil de referência todos os dias da semana (antes de executar nossos builds noturnos) e fazemos commit das mudanças mais recentes assim que concluídas", explica Neumayer.

Acompanhar o Modern Android Development

A experiência da Monzo mostra o que é possível quando você fica por dentro das recomendações de ferramentas de build do Android. Embora os apps legados geralmente tenham dificuldades com o uso complexo de reflexão, o Monzo achou a transição simples ao documentar corretamente as regras de manutenção. "Sempre adicionamos um comentário explicando por que as regras de retenção estão em vigor. Assim, sabemos quando é seguro removê-las", observa Neumayer.

Qual é o conselho de Neumayer para outras equipes? Verifique regularmente suas práticas em relação aos padrões atuais: "Confira as recomendações mais recentes do Google sobre o desempenho do app e verifique se você está seguindo todos os conselhos mais recentes".

Para começar e saber mais sobre o R8, acesse https://d.android.com/r8

Escrito por:

Continuar lendo