几年前做过一年多相机性能优化,天天用。最近又用这个做简单启动耗时分析,luancher#down-SplasActivity-MainActivity#GPU,发现很多东西都忘记了。顾做笔记回忆一下。
systrace&python2.7等配置安装
-
systrace高版本sdk被移除了,Perfetto了解下 -
python依赖版本是2.7 -
python可能还需要pip install一些软件包
trace.html打开与操作
-
? Chrome tracing help。wasd快捷键 -
进程筛选、binder、VSync等 -
chrome://tracing 打开更快,但是可能看不清条目名称 -
ChromeDevTools使用,查看条目名称
数据分析
- 查看点击事件 app和launcher的UIThread上的deliverInputEvent,down|move|up,会有多个。
- 查看Activity的渲染切换 SurfaceFinger下activity条目。
- 查看进程间binder交互
- 查看VSYNC与Choreographer
- 查看线程锁情况
- 火焰图方法分析
- 。。。
常见使用场景
-
压缩寻找最短的UI渲染路径--启动优化
Systrace工具源码原理
-
略,网上很多,可以自己行阅读源码
Trace打点&自作分析工具
-
自打点分析业务 -
自作分析工具,比如python脚本自动化解析分析多个trace数据,输出excel表格化图形化数据。毕竟对于一些固定模式套路的分析,Systrace手动查看分析统计重复工作费时费事。当然要根据实际情况权衡编写脚本与手动统计分析的工时。
通过基本的工具配置,掌握基本使用,还要结合系统服务框架原理以及app框架逻辑融汇贯通。对于形成固定套路的分析手段,可以编写自动化脚本,得到可视化数据图表。