本篇的主要针对整机性能的一个解读,主要拆解整机性能有哪些小的领域,对应的测试用例是怎么样的,这类问题优化思路是怎么样的。
各家厂商针对性能的测试都设计了不同的用例,因此针对性能测试其实是比较五花八门的。我这里凭着经验来总结一下通常都有哪些场景和性能测试相关。
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针对系统跑分的测试报告如下:
