Os comparativos de mercado principais são um conjunto de comparativos que abrangem as jornadas de usuário de alto nível do app, como inicialização do app ou rolagem no app Pokedex de código aberto.
- Comparativos de mercado de heróis de inicialização:rastreamento do tempo entre a abertura do app e a exibição do conteúdo.
- Comparativos de herói de rolagem:medem o desempenho de rolagem de uma grade preguiçosa com imagens.
Configuração do teste
- Seleção de apps:realizamos esses testes usando o app Pokedex de código aberto, comparando as versões baseada em visualização e baseada em Compose. O app foi selecionado para representar cenários do mundo real e não foi desenvolvido pela equipe do Compose.
- Configuração de hardware:executamos comparativos de mercado em um Pixel 3a com Android 12 (API 31) com CPUs e GPUs bloqueadas. Esse dispositivo é usado como a linha de base de desempenho padrão para comparativos de mercado principais.
- Configuração de build:os comparativos de mercado usam o app criado no modo de lançamento com o R8 ativado. O app é totalmente pré-compilado para reduzir a instabilidade da compilação just-in-time (JIT).
- Seleção de resultados: para garantir a análise do pior caso, outliers extremos e ruídos não representativos foram excluídos dos resultados de comparativo de mercado. Um valor de referência foi estabelecido selecionando os valores medianos dos dados de performance do limite superior.
Comparativos de mercado de heróis de startups
Para medir a inicialização, usamos PokedexStartupBenchmark. O
PokedexStartupBenchmark mede o tempo que leva para o app Pokedex ficar
visível ao usuário.
A inicialização do app pode ocorrer em um destes três estados: inicialização a frio, inicialização com estado salvo ou inicialização a quente. Cada estado afeta o tempo que leva para um app ficar visível para o usuário. Em uma inicialização a frio, o app é iniciado do zero. Nesse comparativo, medimos o desempenho de inicialização do app no estado de inicialização a frio. Recomendamos que você sempre otimize o app presumindo que se trate de uma inicialização a frio. Ao fazer isso, o desempenho de inicializações a quente e com estado salvo também pode melhorar.
As métricas usadas para medir o tempo de inicialização do app são o tempo para exibição inicial e o tempo para exibição total.
Tempo para exibição inicial
O tempo para exibição inicial (TTID) mede o tempo que um app leva para produzir o primeiro frame, incluindo a inicialização do processo durante uma inicialização a frio, a criação de atividades durante uma inicialização a frio ou inicialização com estado salvo e a exibição do primeiro frame.
No PokedexStartupBenchmark, o Compose 1.11 é 2,5% mais lento que o Views para
TTID com uma inicialização a frio.
Tempo para exibição total
O tempo para exibição total (TTFD) mede o tempo até que o app se torne interativo. Isso significa que todos os dados foram carregados e renderizados. Para mais informações sobre o tempo até a exibição completa, consulte Tempo de inicialização do app.
No PokedexStartupBenchmark, o Compose 1.11 é 13% mais lento que o Views para
TTFD com uma inicialização a frio.
Comparativos de rolagem do elemento principal
Para medir o desempenho de rolagem, usamos o PokedexScrollBenchmark. Ele mede o desempenho de rolagem da tela do app Pokedex para uma grade preguiçosa com imagens. Nesse comparativo, a tela inteira é rolada e movida várias vezes, e novos itens são carregados. A performance de rolagem é medida pela taxa de jank.
Taxa de instabilidade
Os dispositivos Android renderizam até 60 ou 120 quadros por segundo (QPS). Isso significa que o sistema tem um prazo estrito (por exemplo, 16,6 ms para 60 fps) para produzir um frame. Se o app demorar muito para fazer o trabalho, isso pode causar uma interrupção visível que chamamos de instabilidade.
No PokedexScrollBenchmark, o Compose e o Views alcançam o mesmo desempenho de 0,21% de instabilidade desde o Compose 1.9.0. Em termos absolutos, 1 de 485 frames estava
instável.
Esses comparativos mostram que o Compose 1.9 e versões mais recentes correspondem ao desempenho do Views para jank durante a rolagem.
Executar comparativos de mercado de heróis
Para validar os resultados de performance e executar os comparativos de mercado localmente:
- Siga o guia do AndroidX para conferir o código-fonte.
- Siga as instruções no código-fonte dos comparativos de mercado de destaque.
É possível executar esses comparativos em qualquer dispositivo compatível, como um aparelho específico para o qual você está otimizando seu app. No entanto, para validar os resultados oficiais, use a mesma configuração de hardware.