Compose 与原生启动性能对比

简介: Compose 与原生启动性能对比

Macrobenchmark 接入


官方接入文档:macrobenchmark


接入运行报错:


java.lang.RuntimeException: Baseline profiles aren't supported on this device version
  at androidx.benchmark.macro.CompilationMode$Partial.broadcastBaselineProfileInstall(CompilationMode.kt:261)
  at androidx.benchmark.macro.CompilationMode$Partial.compileImpl$benchmark_macro_release(CompilationMode.kt:285)
  at androidx.benchmark.macro.CompilationMode.resetAndCompile$benchmark_macro_release(CompilationMode.kt:73)
  at androidx.benchmark.macro.MacrobenchmarkKt.macrobenchmark(Macrobenchmark.kt:139)
  at androidx.benchmark.macro.MacrobenchmarkKt.macrobenchmarkWithStartupMode(Macrobenchmark.kt:301)
  at androidx.benchmark.macro.junit4.MacrobenchmarkRule.measureRepeated(MacrobenchmarkRule.kt:102)
  at androidx.benchmark.macro.junit4.MacrobenchmarkRule.measureRepeated$default(MacrobenchmarkRule.kt:92)
  at com.codelang.benchmark.ExampleStartupBenchmark.startup(ExampleStartupBenchmark.kt:30)
复制代码

搜了下 stackoverflow ,不支持 Android 12 的设备,在 issueracker 上 google 也给了回复,不支持在 Android 12L 上运行,建议在小于等于 31 的 API 上运行:

image.png

由于我需要测 Compose 项目,所以根据答主所述,需要引入 profileinstall-1.2.0-alpha 版本,来覆盖掉 compose-ui 透传引入的 profileinstall 版本

测试:


此次测试运行的是 release 版本,并且每次测试结束都会让 Android Studio 静置一会,然后杀死 java 进程。


数据并不能保证很准确,仅供参考,因为在不同的电脑和环境下,都会产生不同的数据。

本次测试的启动页面是列表,原生采用 RecyclerView 实现,Compose 采用 LazyColumn 实现。


电脑配置:


  • CPU:1.4 GHz 四核 Intel Core i5
  • 内存:8 GB 2133 MHz LPDDR3

模拟器:


  • Android 11

演示代码地址:


点击绿色运行按钮即可开始测试:


image.png

测试结果


image.png

image.png

每组测试用例自动执行 5 遍,结果会输出这 5 次中的最小值、中值、最大值,我们取中值来对比可能比较合理点:


image.png

从本次测试结果来,Compose 的冷启动略逊于原生,两者相差 124ms,但在热启动与温启动状态下,Compose 性能又优于原生。

目录
相关文章
|
消息中间件 数据可视化 NoSQL
XXL-Job搭建(传统方式&Docker方式)与使用(Linux环境下)
XXL-Job搭建(传统方式&Docker方式)与使用(Linux环境下)
4110 0
XXL-Job搭建(传统方式&Docker方式)与使用(Linux环境下)
|
27天前
|
安全 Linux 虚拟化
LXD如何使用,跟Docker的区别都有什么?优点和缺点都有什么?
【10月更文挑战第28天】LXD如何使用,跟Docker的区别都有什么?优点和缺点都有什么?
86 1
|
2月前
|
存储 Ubuntu JavaScript
如何使用Docker优化你的开发环境配置
如何使用Docker优化你的开发环境配置
|
4月前
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
7月前
|
监控 Serverless Docker
函数计算常见问题之部署docker-compose
函数计算(Function Compute, FC)是阿里云提供的无服务器计算服务,它允许用户在无需管理服务器的情况下运行代码,但在配置和执行过程中可能遇到报错,本合集致力于梳理FC服务中的常见报错和配置问题,并提供解决方案,帮助用户优化函数执行环境。
252 2
|
4月前
|
存储 Shell API
G6VP 与 GraphScope部署问题之拉取并启动 GraphScope 的 Docker 镜像如何解决
G6VP 与 GraphScope部署问题之拉取并启动 GraphScope 的 Docker 镜像如何解决
|
7月前
|
并行计算 Linux Docker
Docker【部署 05】docker使用tensorflow-gpu安装及调用GPU踩坑记录
Docker【部署 05】docker使用tensorflow-gpu安装及调用GPU踩坑记录
430 0
|
存储 缓存 Java
Docker构建优化解析
Docker镜像用作Docker执行程序中的主映像。它们是容器的蓝图,提供了有关如何生成容器的说明。在本文中,我将介绍一些经常被忽视的概念,这些概念将有助于优化Docker镜像开发和构建过程。
108 0
|
Kubernetes 容器
目前为止最全的Kubernetes最新版核心命令
目前为止最全的Kubernetes最新版核心命令
|
监控 Linux 测试技术
性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据
性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据
222 0