1 概述

冷启动大致可以分成以下几块内容:

S0 (system) 主要是 Activity 的创建耗时(从 Touch up,即 ptr:up 开始) ptr:up
S1 App 从 Activity 创建成功,到下 open camera 的时间(对应 CameraService::connect); Note:一般习惯把 S0 和 S1 算成一大阶段;
S2 HAL open camera 到 onOpened(即 connect 调用完成)回调上去的时间;
S3 App onOpened 回调后,到 App 去 creatSession 的时间;
S4 HAL creatSession 的耗时(对应整个endConfigure);
S5 App creatSession 完成到 setRepeatingRequest 的时间;
S6 HAL setRepeatingRequest 后到底层抛出第一帧(cameraserver 会有一个 first full buffer 的记录)的时间;
S7 App+MultiMedia 底层出第一帧后,到 App 真正第一次开始 draw 数据,数据送到 surfaceFlinger 显示出来(第二次 onMessageReceived 完成)的时间。
adb shell setprop service.adb.root 1
开发者模式关闭再打开
sched/freq/idle  #这三个tag是cpu 信息,无论如何必须带上
gfx/view/input  #测试列表滑动.桌面滑动.这种流畅性问题
gfx/view/imput/hwui  #绘图问题
gfx/view/input/res/am/wm #测试app启动
gfx/view/input/dalvik/disk  #GC或者IO导致卡顿
gfx/view/input/res/am/wm/power #亮屏,电量相关
python systrace.py gfx camera view input sched freq video disk dalvik res am wm -b 20480 -t 5 -o trace.html
S0:Touch Up → ActivityStart

S1:ActivityStart → open camera | start

S2:Open camera

S3:Open camera | end → Configure streams | start

S4:Configure streams

S5:Configure streams | end → SetRepeatingRequests

S6:SetRepeatingRequests → 1st frame out from hal

S7:1st frame out from hal → Display show 1st frame

2 S0+S1

system+app耗时
搜索关键字ptr:up
1.png

可以看到如下的内容:这是按下相机按钮并且抬起的操作
2.png
从 这里开始计时到connectDevice结束是S0+S1的时间.

S1的主要时间是activityStart到connectDevice

S0: AppLaunch_dispatchPtr:Up –> activityStart

S1: activityStart –> connectDevice

1.png

3 S2

hal耗时

搜索connectDevice
微信图片_20210207161216.png

可以看到 connectDevice的持续时间.这就是S2的耗时
微信图片_20210207161216.png

4 S3

app耗时

从下图可以看到是从connectDevice的结尾到 endConfigure的开始

1.png

5 S4

hal 耗时
endConfigure的持续时间

3.png

6 S5

app耗时

从endConfigure的结尾到setRepeatingRequest返回完成

1.png
3.png

7 S6

hal耗时

直接搜索first full buffer .有的apk会返回多个.一般都是以最后一个收尾为主.
这个一般都是和captureRequest返回在一起的.

耗时是从setRepeatingRequest 计算到first full buffer返回

8 S7

app和多媒体耗时,有待研究

版权声明:本文为JoeNero原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/JoeNero/p/14459848.html