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、游戏性能

相关推荐
Sirens.10 小时前
MySQL表设计进阶-约束范式连接索引与事务
android·数据库·mysql
zh_xuan13 小时前
安卓上 mmap读取并修改文件内容
android·mmap
二流小码农13 小时前
鸿蒙开发:实现文本渐变效果
android·ios·harmonyos
光头闪亮亮14 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(中)
android·c++·go
光头闪亮亮14 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(上)
android·sqlite·go
光头闪亮亮14 小时前
Fyne ( go跨平台GUI )项目实战-项目开发必备基础知识(下)
android·c++·go
Ch_champion15 小时前
2018年之前的Android 项目上使用的技术点(及第三方库)
android
龚礼鹏15 小时前
RK Android16 wifi 投屏失败问题排查
android
晓梦林17 小时前
[ACTF2020 新生赛]BackupFile学习笔记
android·笔记·学习
ITmaster073118 小时前
告别 IDE?Android CLI 来了,开发进入 AI Agent 时代
android·ide·人工智能