性能问题如何解决
这篇文档罗列一下平时遇到的性能问题是如何解决的流程和方案选择
1.app启动问题
app启动问题主要集中在C300项目上面,一般情况下VAL会用高速相机把系统的app以及选择几款主流第三方app测试.
app启动一般分为第一次和非第一次,影响app启动主要几种情况:
A.CPU核数和频率
如果发现cpu核数或者频率过低,可以关掉thermal测试下
目前项目上已经做了CPU boost,关于CPU boost请参考MTK或者高通文档
B.内存
如果启动app在不断kill进程回收内存,说明内存不足
C.IO效率
第一次启动app,可能会涉及到dex文件或者插件优化,这个消耗IO和CPU资源
D.APP本身行为
部分app启动会联网有广告,这个时候启动时间会增加
C300 patch list: PERFWIN-2
分析启动问题的工具,主要借助于systrace,这个使用就不多说了.
2.整体性能卡顿情况
整体性卡顿问题目前遇到主要在C800上面,这种情况基于当前内存占用,cpu使用情况(核数和频率),以及IO情况.
然后根据内存,CPU占用做相关的方案调整,比如是否TPS生效,lmk参数是否合适,具体参考 patch list.
工具参考catch_debuginfo.sh
3.TP跟随性比较差
tp跟随性差目前为止大极这边主要遇到一个问题就是viko给C800的tp打分不过关,具体文档找不到了,我这边跟高通提了case:03403300,03436670. 如果有关于tp其它流程问题,请参考MTK或者高通文档
4.开机速度优化
开机速度,大部分项目对开机一般要求在多少秒,之前Android N上面要求在12s左右,而在Android O上面由于treble的原因,底层hal拖累了开机速度,导致目前的非第一次开机速度在20s左右
针对非第一次开机,目前的方案有几点:
A.CPU boost
B.多线程扫描APK
C.精简不必要的模块启动
D.精简开机动画
针对第一次开机的方案,在上面的基础上还需要添加dex的预优化方案
这块调试可以参考MTK boot prof log机制或者借鉴boot chart 工具
5.总结
性能问题是在抛开bug的情况下的调优和方案取舍,所以必须有多标准或者对比,如果有了对比,就可以得出具体的差别.而对比的话要选好样本,尽量芯片平台和内存以及软件平台一致,得到差距取相关的信息做对比便一目了然.