一级 爰做片免费网站,做中学学中做网站,中山小榄网站建设,饶阳营销型网站建设费用性能优化#xff08;卡顿分析#xff09; 文章目录 一、抓取trace的方法1.使用systrace抓取trace2.使用atrace抓取3.使用Perfetto抓取trace 二、trace文件的分析1.快捷操作1.1 导航操作1.2 快捷操作 2.chrome trace工具分析trace文件3.Prefetto分析trace文件 一、抓取trace的…性能优化卡顿分析 文章目录 一、抓取trace的方法1.使用systrace抓取trace2.使用atrace抓取3.使用Perfetto抓取trace 二、trace文件的分析1.快捷操作1.1 导航操作1.2 快捷操作 2.chrome trace工具分析trace文件3.Prefetto分析trace文件 一、抓取trace的方法
1.使用systrace抓取trace
使用Android sdk目录下的systrace抓取tarce,路径为Sdk\platform-tools\systrace
注Android sdk plotform需要小于34 api34删除了systrace 默认使用Perfetto 需要安装python2.x版本。python环境安装完成后还需要安装pywin32和six库解决
pip install win32com
pip install six安装完成后运行
python systrace.py -a com.test.demo:demo --time10 -b 48000 -o systrace.html gfx view wm am freq idle binder_driver参数解释
-a 应用包名–time 抓trace的时长-o 生成的trace文件路径-b buffer大小-categories: 抓trace的模块 可以使用python systrace --list查看支持的模块
2.使用atrace抓取
adb connect ip
adb root
adb remount
adb shell
执行如下命令
atrace -z -b 8000 -t 10 -a com.tcl.vod -o ./trace1 sched freq gfx irq input view wm am pm res dalvik idle ss rs workq binder_driver binder_lock disk mmc memreclaim-z 压缩-b buffer大小-t 抓取时长-a 包名-catecategories 抓trace的模块
复现问题后输入
adb shell ps -A | grep atrace确认atrace进程是否结束
抓取完成后取出生成的trace文件并转换成html
adb pull /data/local/tmp/trace_output
systrace.py --from-file trace_output -o output.html需要获取root权限。
3.使用Perfetto抓取trace
Perfetto在Android9以上默认预制需要开启
开启trace
setprop persist.traced.enable 1
perfetto -o /data/misc/perfetto-traces/trace_log -t 120s -b 100mb -s 150mb sched freq idle am wm gfx view input-o trace文件输出路径-t 抓取trace的时间-b buffer大小-catecategories 抓trace的模块
二、trace文件的分析
抓取trace文件后最终都需要转为html文件后利用工具进行分析。目前分析的工具有chrome://tracing/ 和Perfetto
1.快捷操作
1.1 导航操作
导航操作作用w放大[shift]速度更快s缩小[shift]速度更快a左移[shift]速度更快d右移[shift]速度更快
1.2 快捷操作
常用操作作用f放大当前选定区域m标记当前选定区域v高亮VSyncg切换是否显示60hz的网格线0恢复trace到初始态这里是数字0而非字母o
一般操作作用h切换是否显示详情/搜索关键字enter显示搜索结果可通过← →定位搜索结果显示/隐藏脚本控制台?显示帮助功能
2.chrome trace工具分析trace文件 chrome://tracing/ 打开该链接加载第一步中抓到的trace文件可以看到图形化加载的文件横坐标以时间为单位纵坐标以进程-线程的方式划分。同一进程的线程为一组放在一起。
每个app进程都有一个Frams行绿色的圆点代表正常帧即在16.6ms内完成绘制的帧。当圆点颜色为黄色或者红色意味着该帧的绘制超过了16.6ms,即发生了丢帧。此时需要通过放大该帧分析问题。
针对上图圈住的红帧进行分析 选中该帧按w放大后按M可以标记该帧可以看到该帧耗时113ms,严重超过16.6ms。 主要耗时发生在layout阶段。layout中包含了每个item的inflaterecyclerview卡顿就发生在这儿。优化主要针对这几个耗时较长的进行优化。
3.Prefetto分析trace文件
https://ui.perfetto.dev/ 打开该链接打开抓到的trace文件。 基本操作步骤与上述与chorme类似