Camera 冷启动阶段分解
- 一、Camx trace 调试开关设置
- 二、Camera 冷启动阶段分解分析
- 1. 从 TouchUp 到 ActivityStart 耗时
- 2. 从 ActivityStart 到 App 层 OpenCamera 耗时
- 3.HAL 层 OpenCamera耗时
- 4.APP 层 OpenCameraDone 到ConfigureStreams
- 5.HAL 层 ConfigureStreams 耗时
- 6. APP 层 ConfigureStreams Done 到 SetRepeatingRequests
- 7.SetRepeatingRequests 到 第一帧HAL3ProcessCaptureResult
- 8.HAL3ProcessCaptureResult 到第一帧Preview
- 9.Camera APP冷启动总耗时
一、Camx trace 调试开关设置
1.设置 camxoverridesettings trace开关
adb root
adb remount
adb shell "echo traceGroupsEnable=0x10080 >> /vendor/etc/camera/camxoverridesettings.txt"
adb shell "echo traceErrorEnable=TRUE >> /vendor/etc/camera/camxoverridesettings.txt"
adb shell "echo traceOutputEnable=0x10080 >> /vendor/etc/camera/camxoverridesettings.txt"
adb reboot
2. 重启后设置开启camx trace 开关
因为 camxoverridesettings 只有重启之后可以生效,所以重启完成后需要开启trace 开关,既可以开始抓取Camera的 Systrace。
adb shell "echo 1 > d/tracing/events/camera/enable"
二、Camera 冷启动阶段分解分析
1. 从 TouchUp 到 ActivityStart 耗时
从Touch UP 到 ActivityStart 阶段,系统创建App进程耗时:

- 1.PostFork 耗时需要排查 Zygote.java 代码
Zygote.java frameworks\base\core\java\com\android\internal\os
- ZygoteInit 耗时需要排查ZygoteInit.java 代码
ZygoteInit.java frameworks\base\core\java\com\android\internal\os
- 3.ActivityThreadMain耗时需要排查ActivityThread.java代码
ActivityThread.java frameworks\base\core\java\android\app
- bindApplication 耗时需要排查ActivityThread.java代码,同上
2. 从 ActivityStart 到 App 层 OpenCamera 耗时
1. App 开始执行 MainActivity 一系列 onCreate,onStart,onResume,openCamera等操作

2.Framework层 cameraserver 开始响应App getCameraCharacteristics 、connectDevice 等操作。

- activityStart 耗时需要排查 LaunchActivityItem.java 代码
LaunchActivityItem.java frameworks\base\core\java\android\app\servertransaction
- ResumeActivityItem耗时需要排查 ResumeActivityItem.java 代码
ResumeActivityItem.java frameworks\base\core\java\android\app\servertransaction
- Choreographer#doFrame 耗时需要排查 Choreographer.java 代码
Choreographer.java frameworks\base\core\java\android\view
3.HAL 层 OpenCamera耗时

HAL 层开始响应 APP OpenCamera的操作,并返回 open状态 给APP。
camera_module->open 耗时需要排查hal 层 CameraModule.cpp open 方法中的耗时
CameraModule.cpp hardware\interface\camera\common\1.0\default
4.APP 层 OpenCameraDone 到ConfigureStreams

5.HAL 层 ConfigureStreams 耗时

6. APP 层 ConfigureStreams Done 到 SetRepeatingRequests

7.SetRepeatingRequests 到 第一帧HAL3ProcessCaptureResult

8.HAL3ProcessCaptureResult 到第一帧Preview

9.Camera APP冷启动总耗时

Camera 冷启动阶段分解的更多相关文章
- 微服务化不同阶段 Kubernetes 的不同玩法
本文由 网易云发布. 作为容器集群管理技术竞争的大赢家,Kubernetes 已经和微服务紧密联系,采用 Kubernetes 的企业往往都开始了微服务架构的探索.然而不同企业不同阶段的微服务实践面 ...
- android 性能优化 -- 启动过程 冷启动 热启动
一.应用的启动方式 通常来说,启动方式分为两种:冷启动和热启动. 1.冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动. 2.热启动:当启 ...
- 微服务化的不同阶段 Kubernetes 的不同玩法
欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为容器集群管理技术竞争的大赢家,Kubernetes已经和微服务紧密联系,采用Kubernetes的企业往往都开始了微服务架构的探索.然而不同企业 ...
- QCon笔记~《天下武功,唯快不破——面向云原生应用的Java冷启动加速技术》
上周去听了QCon全球开发大会,其中有几场印象比较深刻的分享,除去几个比较概念化的话题,在Java技术演进这个Topic里的几个分享都是比较有干货的(但感觉工作中用不到) 首先是关于林子熠老师分享的冷 ...
- 阶段总结-Java基础-超进阶
Gitee项目地址:https://gitee.com/zc10010/java_interview_guide/tree/master/知识点话术 项目叫话术,但是我觉得作为知识点学习是挺不错的. ...
- Facebook iOS App如何优化启动时间
http://www.cocoachina.com/ios/20160105/14870.html 提高 Facebook 应用的性能已经成为 Facebook 持续关注的领域.因为我们相信一个高性能 ...
- 高性能MySQL笔记 第6章 查询性能优化
6.1 为什么查询速度会慢 查询的生命周期大致可按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段. ...
- MySQL的Explain命令
Explain命令是查看查询优化器如何决定执行查询的主要办法. 调用 EXPLAIN 要使用EXPLAIN,只需在查询中的SELECT关键字之前增加EXPLAIN.MySQL会在查询上设置一个 ...
- pig hive 区别
Pig是一种编程语言,它简化了Hadoop常见的工作任务.Pig可加载数据.表达转换数据以及存储最终结果.Pig内置的操作使得半结构化数据变得有意义(如日志文件).同时Pig可扩展使用Java中添加的 ...
- MySQL中EXPLAIN的解释
EXPLAIN是查看MySQL优化器如何决定执行查询的主要方法,这个功能具有局限性,以为它并总是会说出真相,但是却可以获得最好信息. 学会解释EXPLAIN,你就会了解MySQL优化器是如何工作,你才 ...
随机推荐
- 【Scala】08 模式匹配 Match Case
由Scala封装的一套match case处理,功能比原Java的更为强大 package cn import scala.collection.immutable.IndexedSeqDefault ...
- 浪潮计算平台之AI方向——AI_Station开发环境的使用总结
概览: 1. 开发环境 使用默认的设置,不改挂载路径: 可以看到在容器内对挂载的目录进行文件操作是可以真实记录到实际的文件目录内的. 对挂载路径的另一种设置: 不使用默认的设置,手动更改挂载路径: ...
- 乌克兰学者的学术图谱case2
======================================= 0. 学者:Солонін Ю.М. 中文翻译名:索洛宁·尤里·米哈伊洛维奇 英文翻译名:Solonin Yuriy M ...
- 社区6月月报 | Apache DolphinScheduler重要修复和优化记录
各位热爱Apache DolphinScheduler的小伙伴们,社区6月月报更新啦!这里将记录Apache DolphinScheduler社区每月的重要更新,欢迎关注. 月度Merge Stars ...
- SMU Autumn 2023 Round 1(Div.1)
SMU Autumn 2023 Round 1(Div.1) A. Set or Decrease(枚举) 题意就是你可以进行两种操作,将\(a_i-1\)或者令\(a_i\)等于\(a_j\),然后 ...
- 优化系统性能:深入探讨Web层缓存与Redis应用的挑战与对策
Web层缓存对于提高应用性能至关重要,它通过减少重复的数据处理和数据库查询来加快响应时间.例如,如果一个用户请求的数据已经缓存,服务器可以直接从缓存中返回结果,避免了每次请求都进行复杂的计算或数据库查 ...
- springboot2集成oauth2坑二(The bean 'scopedTarget.oauth2ClientContext', defined in class path resource )
码云地址:https://gitee.com/lpxs/lp-springcloud.git 有问题可以多沟通:136358344@qq.com. 由于使用Enableoauth2sso注解一直报错, ...
- [天线原理及设计>基本原理] 1. 辐射机制
1. 辐射机制 1.1. Single Wire 单线 如果电荷不移动,则不会产生电流,也不会产生辐射. 如果电荷以匀速移动: a. 如果电线是直的,并且范围是无限的,则没有辐射. b. 如果电线弯曲 ...
- Docker不同宿主机网络打通
本方式使用docker Swarm集群的方式创建overlay 网络进行打通 背景 因java微服务使用nacos做配置中心,为了解决Nacos服务注册使用Docker容器内网ip问题,使用此方案 前 ...
- vmware创建虚拟机
1.vmware创建麒麟虚拟机 选择安装程序光盘映像文件,会最小化安装桌面版本,新的镜像可能识别不到,比如麒麟等. 麒麟系统类似于欧拉,欧拉类似于CentOS,所以我们选择CentOS 修改虚拟机名称 ...