绘制性能分析:Systrace
继续《绘制性能分析:GPU Rendering Profile》,接着了解绘制性能分析相关的方法,这次使用Android早期提供的工具Systrace,是位于../sdk/tools/目录中的monitor.bat工具
1、Systrace简介
Systrace是Android平台提供的一款工具,自Android4.1引入,用于记录短期内的设备活动,分析性能。该工具会生成一份报告,其中汇总了 Android 内核中的数据,例如 CPU 调度程序、磁盘活动和应用线程。这份报告可帮助您了解如何以最佳方式改善应用或游戏的性能。
注意:Systrace已在AndroidStudio中废弃,使用AndroidStudio中的CPU Profile分析耗时
2、抓取Systrace
通过monitor工具方便的抓取需要分析的Debug版本应用。Android系统自身关键代码执行处都有trace埋点,阅读源码就会发现Android源码有大量的log和trace记录。
2.1、抓取
①打开DDMS,选择正在运行的Debug应用。

②点击右上角“Capture system wide trace using Android systrace”弹出如下对话框。选择保存trace.html的位置,还有要抓取的信息和抓取trace时长。

③点击OK,操作Debug应用,抓取trace log

2.2、添加trace
默认只能抓取系统自带的关键trace埋点,从Android 4.3( API 18)开始可以在应用中添加trace,方便分析执行耗时。使用系统提供的android.os.Trace类添加执行时的trace记录。主要beginSection()要和endSection()方法成对出现构成一个完整的trace记录。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Trace.beginSection("QUIBBLER");
...
loginViewModel.getLoginFormState().observe(this, new Observer<LoginFormState>() {
@Override
public void onChanged(@Nullable LoginFormState loginFormState) {
...
}
});
...
Trace.endSection();
}3、分析Systrace
抓取到的trace.html文件中有哪些内容呢?能对分析卡顿、绘制性能有什么帮助呢。
3.1、打开
①Chrome浏览器输入chrome://tracing/进入trace界面,load刚才抓取的trace.html文件
②输入比较麻烦,直接双击文件(默认浏览器是Chrome)或者把文件拖到Chrome浏览器中即可打开

3.2、快捷键
有几个常用的快捷键,方便查看trace:
W: 放大页面
S:缩小页面
A:左平移页面
D:右平移页面
M:快速选中区域或者取消选中区域
->: 向右移动一个事件
<-:向左移动一个事件
3.3、分析
如何阅读一个trace.html报告呢?详细参考官方的Navigate a Systrace report。需要关注几个重要的Trace:
①frames:分析每一帧的耗时,并用不同的颜色标注,绿色表示16毫秒内,黄色和红色表示超过16ms。
②Alert:警告类型和次数
③CPU:CPU执行的进程、持续时间等信息
更多分析方法推荐阅读Android 中的卡顿丢帧原因概述系列博客,讲的非常详细。
相关博客:





