好奇心驱使,看看Android Jetpack Compose 1.5.1性能到底有没有提升?

编程入门 行业动态 更新时间:2024-10-13 04:23:29

<a href=https://www.elefans.com/category/jswz/34/1760530.html style=好奇心驱使,看看Android Jetpack Compose 1.5.1性能到底有没有提升?"/>

好奇心驱使,看看Android Jetpack Compose 1.5.1性能到底有没有提升?

前言

Android Jetpack Compose从2019年在Google I/O 大会上首度亮相,到2023年9月份发布 1.5.1 稳定版本已经有一些年头,但Compose的性能时至今日仍然是被开发者所诟病。

本篇文章,主要是满足笔者自己的好奇心,顺便使用Perfetto工具和大家一起测一测,这次新鲜出炉的 1.5.1 版本是否真的如官方所说的一样性能有所提升?

准备工作

  • AndroidStudio:Android Studio Giraffe | 2022.3.1 Patch 1
  • 一台Google Pixel4手机:搭载Android 12系统,开启开发者选项,开启HWUI呈现模式,选择在屏幕上显示为条形图,开启显示刷新频率;
  • 一个使用Android Jetpack Compose LazyColumn组件实现的列表App,集成滴滴开源的DoKit研发助手。

测试目标

对比Android Jetpack Compose 1.4.1 和 1.5.1版本的LazyColumn组件的性能表现。实际上,从 1.3.0 起,Compose就对Modifier系统进行了重构,引入Modifier.Node作为Modifierposed 的更高性能替代品,但这个过程不是一蹴而就的,需要时间逐步去完成替换。由于时间精力有限,笔者就不做 1.3.0 等其它版本的测试对比了。

温馨提示:Android官方推荐我们使用 Compose 物料清单 (BoM),通过指定 BoM 的版本来管理所有 Compose 库版本。

BOM 与 Compose 库版本对应表点这里查看。


1.4.1 对应 2023.04.01,1.5.1 对应 2023.09.00

测试步骤

  1. 编写Shell脚本使用adb shell swipe命令模拟不断的在LazyColumn组件界面来回滑动;
  2. 使用Perfetto官方提供的record_android_trace辅助脚本录制trace文件,持续10秒左右,每个版本录制10次;
  3. 使用Perfetto UI打开录制好的trace文件,记录并统计android_frame_timeline_metric指标数据并汇总成表格;



LazyColumn组件界面没有很复杂,是从官方Jetchat项目拷贝过来的代码。看动图可以发现,左上角的屏幕刷新率和DoKit帧率是没有变化的。

测试数据

通过使用Perfetto获取android_frame_timeline_metric指标数据并汇总(每次10秒测10次),其中total_frames是应用的总帧数,missed_frames是应用丢帧的数量,fps是帧率=total_frames/时间(秒)

可能测试方式不是很合理(但是配合脚本测试起来很方便),如有更好的方式,欢迎大家指教。

Android Jetpack Compose 1.4.1

测试数据部分截图如下:

android_frame_timeline_metric指标数据

进程timieline

每次10秒测10次数据汇总:

序号total_framesmissed_framesfps
17874978.7
27744577.4
37775077.7
47874878.7
57885278.8
67984379.8
77784877.8
87944679.4
97775077.7
107835078.3



平均帧数平均丢帧数平均每秒丢帧数平均帧率平均丢帧率
784.348.14.8178.45.77%

注:平均丢帧率 = 平均丢帧数 / (平均帧数+平均丢帧数)

Android Jetpack Compose 1.5.1

测试数据部分截图如下:

android_frame_timeline_metric指标数据

进程timieline

每次10秒测10次数据汇总:

序号total_framesmissed_frames
180730
282523
382519
483213
58408
683013
78388
88427
984610
108378



平均帧数平均丢帧数平均每秒丢帧数平均帧率平均丢帧率
832.313.91.3983.21.64%

注:平均丢帧率 = 平均丢帧数 / (平均帧数+平均丢帧数)

数据比较

Compose版本平均帧数平均丢帧数平均每秒丢帧数平均帧率平均丢帧率
1.4.1784.348.14.1878.45.77%
1.5.1832.313.91.3983.21.64%

显而易见,使用同样的机型,同样的测试代码,1.5.1 相对 1.4.1帧率更高丢帧更少,虽然不能说是遥遥领先,但确实是有显著提升,而且对比Timeline也很明显。

注:可能大家会觉得测试的时间短或者测试的次数小导致样本数据小不合理,但是实际上笔者经过多次测试发现(延长时间和增加测试次数),基本上这俩个版本的数据差距在Android 12系统的Google Pixel4上差不多就是这样,只是限于篇幅就不过多展示了数据了,感兴趣并且有条件有时间的朋友可以自己测试看看,可能的话加入更多的版本,机型进行对比。

结论

因测试机型、时间和精力等方面的限制,本次测试并不严谨,测试数据也仅供参考。但依然可以用这个小样本数据来回答本文开头提出的疑问:


Android Jetpack Compose 1.5.1 性能有明显提升,体验上更加丝滑了,建议大家赶紧升级。


正如Android官方所说的那样,Android Jetpack Compose很努力,性能正在变得越来越好。

什么?还没用上Jetpack Compose?这个不重要,程序员也要学会跳出技术的角度从更宏观的角度来考人生,人生短短数十载,珍惜当下,拥抱未来,跟上变化。

感谢

  • 感谢Android不断迭代Jetpack Compose让我们不断的继续卷
  • 感谢Perfetto提供的辅助脚本
  • 感谢滴滴开源的APP研发助手DoKit
  • 感谢文心一言和ChatGPT的辅助
  • 感谢fundroid,古哥E下,FunnySaltyFish发布关于Jetpack Compose 1.5的介绍文章

更多推荐

好奇心驱使,看看Android Jetpack Compose 1.5.1性能到底有没有提升?

本文发布于:2024-03-08 16:08:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721387.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:好奇心   到底有没有   性能   Android   Compose

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!