Android 性能优化 【总篇:深入浅出】

本篇的主要针对整机性能的一个解读,主要拆解整机性能有哪些小的领域,对应的测试用例是怎么样的,这类问题优化思路是怎么样的。

各家厂商针对性能的测试都设计了不同的用例,因此针对性能测试其实是比较五花八门的。我这里凭着经验来总结一下通常都有哪些场景和性能测试相关。

1、基本功能

基本功能主要是针对某些特定场景下,例如唤醒速度、解锁速度、拍照、拨号等基本功能操作,所耗费的时间。这部分在某些厂家可能缺少相关案例,但是在某些厂家可能又会针对某个场景要求非常高。

因此这里并不打算详细解说这块内容,主要收集了如下几个案例:

|---------|-----------------------------------------|
| 优化项 | 优化措施描述 |
| 解锁速度优化 | 去掉解锁时的动画,直接进入桌面,提升解锁速度 |
| 桌面切换 | 缩短launcher页面切换动画时间,提升页面切换速度。 |
| 应用和通知显示 | 提前处理异步处理InstalledAppCounter耗时大循环,提升显示速度 |
| 电源键唤醒 | 减少lcd背光、TP等不必要的延时 |
| 电源键唤醒 | 将TP resume 过程放入 workqueue,减少 resume 时间 |

这类问题相对来说比较独立,例如解锁速度类问题分析,就需要fw对解锁这块流程有所研究,然后分析在什么阶段耗时;例如桌面切换就应该先给到launcher模块先分析一下代码是否异常。

2、开机时延

开机时延主要侧重方向是系统从按电源开机,到进入lancher界面,所花的时间。当然这个过程涉及到第一次开机,和非第一次开机等不同场景。虽然场景不一样,但是他们的分析思路都是一样的。Tinno的基础测试用例报告如下:

主要优化思路:减少启动项、异步加载、优化流程的执行耗时;

很多因素都会影响开机速度:

  • Debug日志较多耗时:删除debug日志、关闭UART日志
  • Dexopt应用太多耗时:跳过某些dexopt耗时特别多的应用
  • Preloadclass比较慢:精简preloadclass和异步加载class
  • 首次开机优化耗时:APK预编译

针对如上原因存在如下策略:

  • 删除开机过程中不需要的调试日志
  • 关闭串口日志
  • 首次开机跳过某些应用的预编译优化
  • 异步加载一些java类

详细细节参考

3、开机RAM/ROM

开机RAM是指的系统开机之后,RAM占用多少,可用RAM是多少,ROM占用给多少,可用ROM多少,这类问题需要我们使用一些基本命令来调试RAM/ROM。除此之外还需要我们对已占用的RAM/ROM进行拆分和澄清:

  • 已占用的RAM进行拆分:通常是查看所有进程包括内核占用内存的情况
  • 已占用的ROM进行拆分:通常是各个分区表的配置和各个分区占用空间的情况

4、系统跑分

跑分测试主要是针对CPU/GPU/MEM/UX等进行跑分,针对CPU/GPU跑分通常使用安兔兔等APK,关于MEM主要是对RAM/ROM读写相关测试,通常使用Benchmark或者FLASH等APK,UX一般使用3D等APK。

Tinno针对系统跑分的测试报告如下:

5、应用启动

6、滑动卡帧

7、游戏性能

相关推荐
私人珍藏库2 分钟前
[Android] 红妆相机-拍照美颜图片美化工具
android·数码相机·app·软件·多功能
唯刻V7 分钟前
你的IDE已经不认识你了
android·ide·android-studio·cli
zhangphil24 分钟前
Android OS系统kswapd、kworker、HeapTaskDaemon/heapdamon对卡顿丢帧及应用流畅性的影响
android
开维游戏引擎10 小时前
AI自动生成游戏时,deepseek和mimo对比
android·游戏·语言模型·游戏引擎·ai编程
BreezeDove16 小时前
【Android】AS项目自动连接mumu模拟器配置
android
乐世东方客19 小时前
备份脚本记录(binlog文件+mysql+mongo)
android·数据库·mysql
私人珍藏库20 小时前
[Android] 视频下载鸟 v20.02 会员
android·人工智能·智能手机·app·工具·多功能
zh_xuan20 小时前
tv浏览网页工具
android·tv浏览网页
Carson带你学Android21 小时前
Compose 终于上线 FlexBox:换行与弹性伸缩 都轻松搞定!
android·composer
私人珍藏库1 天前
[Android] 三维山水全景地图-3D地形全景观测地图
android·3d·app·工具·软件·多功能