Movidos pela curiosidade, vamos ver se o desempenho do Android Jetpack Compose 1.5.1 foi melhorado?

Prefácio

Já se passaram alguns anos desde que o Android Jetpack Compose fez sua estreia na conferência Google I/O em 2019 e lançou a versão estável 1.5.1 em setembro de 2023, mas o desempenho do Compose ainda é criticado pelos desenvolvedores hoje.

Este artigo é principalmente para satisfazer a curiosidade do autor. A propósito, usarei a ferramenta Perfetto para testá-la com todos. A versão 1.5.1 recém-lançada realmente melhorou em desempenho conforme declarado oficialmente?

Preparação

  • AndroidStudio:Android Studio Girafa | 2022.3.1 Atualização 1
  • Um celular Google Pixel 4: equipado com sistema Android 12, ative as opções do desenvolvedor, ative o modo de apresentação HWUI, selecione para exibir como um gráfico de barras na tela e ative a taxa de atualização do display;
  • Um aplicativo de lista implementado usando o componente Android Jetpack Compose LazyColumn, integrando o assistente de desenvolvimento DoKit de código aberto da Didi.

Alvo de teste

Compare o desempenho do componente LazyColumn das versões 1.4.1 e 1.5.1 do Android Jetpack Compose . Na verdade, a partir da versão 1.3.0, o Compose reconstruiu o sistema Modifier e introduziu o Modifier.Node como um substituto de alto desempenho para o Modifier.composed.No entanto, esse processo não acontece da noite para o dia e leva tempo para concluir gradualmente a substituição. Devido ao tempo e energia limitados, o autor não testará e comparará outras versões como a 1.3.0.

Lembrete: o Android recomenda oficialmente que usemos a lista de materiais (BoM) do Compose para gerenciar todas as versões da biblioteca do Compose, especificando a versão da BoM. Clique aqui para visualizar a

tabela de correspondência entre as versões da BOM e da biblioteca Compose . 1.4.1 corresponde a 2023.04.01, 1.5.1 corresponde a 2023.09.00


Etapas de teste

  1. Escreva um script Shell e use o comando adb shell swipe para simular o deslizamento constante para frente e para trás na interface do componente LazyColumn;
  2. Utilize o script auxiliar record_android_trace fornecido oficialmente pela Perfetto para registrar o arquivo de rastreamento, que dura cerca de 10 segundos e é gravado 10 vezes para cada versão;
  3. Use o Perfetto UI para abrir o arquivo de rastreamento gravado, registrar e contar os dados do indicador android_frame_timeline_metric e resumi-los em uma tabela;

imagem.png

imagem.png

1694937346615.gif.gif

A interface do componente LazyColumn não é muito complicada e é um código copiado do projeto oficial do Jetchat. Olhando para a animação, você pode ver que a taxa de atualização da tela e a taxa de quadros do DoKit no canto superior esquerdo não mudaram.

Dados de teste

Obtenha dados do indicador android_frame_timeline_metric usando Perfetto e resuma-os (medidos 10 vezes a cada 10 segundos), onde total_frames é o número total de frames do aplicativo, Missed_frames é o número de frames descartados do aplicativo e fps é a taxa de quadros = total_frames /tempo (segundos)

Talvez o método de teste não seja muito razoável (mas é muito conveniente testar com scripts).Se houver uma maneira melhor, fique à vontade para me dar seu conselho.

Android Jetpack Compose 1.4.1

Uma captura de tela da parte dos dados de teste é a seguinte:

imagem.png

Dados do indicador android_frame_timeline_metric

imagem.png

cronograma do processo

Resumo dos dados medidos 10 vezes durante 10 segundos de cada vez:

número de série total_frames quadros_perdidos FPS
1 787 49 78,7
2 774 45 77,4
3 777 50 77,7
4 787 48 78,7
5 788 52 78,8
6 798 43 79,8
7 778 48 77,8
8 794 46 79,4
9 777 50 77,7
10 783 50 78,3

imagem.png

imagem.png

quadros médios Número médio de quadros perdidos Média de frames perdidos por segundo taxa média de quadros Taxa média de perda de quadros
784,3 48,1 4,81 78,4 5,77%

Nota: Taxa média de perda de quadros = número médio de quadros perdidos / (número médio de quadros + número médio de quadros perdidos)

Android Jetpack Compose 1.5.1

Uma captura de tela da parte dos dados de teste é a seguinte:

imagem.png

Dados do indicador android_frame_timeline_metric

imagem.png

cronograma do processo

Resumo dos dados medidos 10 vezes durante 10 segundos de cada vez:

número de série total_frames quadros_perdidos
1 807 30
2 825 23
3 825 19
4 832 13
5 840 8
6 830 13
7 838 8
8 842 7
9 846 10
10 837 8

imagem.png

imagem.png

quadros médios Número médio de quadros perdidos Média de frames perdidos por segundo taxa média de quadros Taxa média de perda de quadros
832,3 13,9 1,39 83,2 1,64%

Nota: Taxa média de perda de quadros = número médio de quadros perdidos / (número médio de quadros + número médio de quadros perdidos)

Comparação de dados

Compor versão quadros médios Número médio de quadros perdidos Média de frames perdidos por segundo taxa média de quadros Taxa média de perda de quadros
1.4.1 784,3 48,1 4.18 78,4 5,77%
1.5.1 832,3 13,9 1,39 83,2 1,64%

Obviamente, usando o mesmo modelo e o mesmo código de teste, 1.5.1 tem uma taxa de quadros mais alta e menos quedas de quadros do que 1.4.1. Embora não se possa dizer que esteja muito à frente, é de fato uma melhoria significativa e também é óbvio quando comparado à Linha do Tempo.

imagem.png

Nota: Você pode pensar que o curto tempo de teste ou o pequeno número de testes resulta em dados amostrais excessivamente pequenos, mas na verdade, o autor descobriu depois de muitos testes (estendendo o tempo e aumentando o número de testes) que a lacuna de dados entre o duas versões são basicamente Este é quase o caso do Google Pixel 4 com sistema Android 12. Devido a limitações de espaço, não mostramos muitos dados. Amigos que estiverem interessados ​​​​e tiverem tempo podem testar sozinhos. Se possível, adicione mais versões e modelos para comparação.

para concluir

Devido a limitações no modelo de teste, tempo e energia, este teste não é rigoroso e os dados do teste são apenas para referência. No entanto, esses pequenos dados de amostra ainda podem ser usados ​​para responder às questões levantadas no início deste artigo:


O desempenho do Android Jetpack Compose 1.5.1 foi significativamente melhorado e a experiência é mais suave. Recomenda-se que todos atualizem rapidamente.


Como dizem os funcionários do Android, o Android Jetpack Compose funciona muito e o desempenho está cada vez melhor.

O que? Ainda não usou o Jetpack Compose? Isso não é importante. Os programadores também devem aprender a sair da perspectiva técnica e examinar a vida de uma perspectiva mais macro. A vida dura apenas algumas décadas. Valorize o presente, abrace o futuro e acompanhe as mudanças.

grato

Acho que você gosta

Origin blog.csdn.net/xiangang12202/article/details/132957549
Recomendado
Clasificación