打开Systrace报告
Systrace介绍
Systrace 是Android平台提供的一款工具,用于记录短期内的设备活动。该工具会生成一份报告,其中汇总了Android内核中的数据,例如CPU调度程序、磁盘活动和应用线程。这份报告可帮助我们了解如何以最佳方式改善应用或游戏的性能。
Systrace 工具用于显示整个设备在做些什么,不过也可用于识别应用中的卡顿。Systrace 的系统开销非常小,因此你可以在插桩测试期间体验实际卡顿情况。
Systrace使用方法详解
要想使用Systrace分析性能,我们首先需要找到Systrace工具,以及使用该工具生成一份.html的报告文件。
抓取的trace如下
使用trace抓取脚本操作后,会生成一个HTML文件,我们可以使用chrome浏览器或者edge浏览器,地址栏输入chrome://tracing/ 或edge://traceing来查看报告。
界面如下(点击Load按钮加载HTML文件即可):
查看报告元素
Systrace 会生成包含多个部分的输出 HTML 文件。该报告列出了每个进程的线程。如果给定线程会渲染界面帧,该报告还会沿时间轴指明所渲染的帧。当您在报告中从左向右移动时,时间会向前推移。
报告从上到下包含以下几个部分。
用户互动
第一部分包含表示应用或游戏中的具体用户互动(例如点按设备屏幕)的条形图。这些互动可用作有用的时间标记。
CPU 活动
下一部分显示了表示每个 CPU 中的线程活动的条形图。这些条形会显示所有应用(包括你的应用或游戏)中的 CPU 活动。
CPU 活动部分可以展开,展开后您就可以查看每个 CPU 的时钟频率。图 1 展示了一个收起后的 CPU 活动部分示例,图 2 展示了显示时钟频率的展开后版本:
图1:
图2
系统事件
此部分中的直方图会显示特定的系统级事件,例如特定对象的纹理计数和总大小。
值得仔细检查的直方图是标记为 SurfaceView 的直方图。计数表示已传递到显示管道并等待显示在设备屏幕上的组合帧缓冲区的数量。由于大多数设备都会进行双重或三重缓冲,因此该计数几乎总为 0、1 或 2。
描绘 Surface Flinger 进程(包括 VSync 事件和界面线程交换工作)的其他直方图,如图所示
显示帧
描绘了一条多色线条,后面是成堆的条形。这些形状表示已创建的特定线程的状态和帧堆栈。堆栈的每个层级代表对 beginSection() 的一次调用,或您为应用或游戏定义的自定义跟踪事件的开头。
cpu调度状态,参考以下链接,
https://editor.csdn.net/md/?articleId=124174490
在代码中加入trace
在一些代码中加入trace方便进行跟踪调试:
Trace.traceBegin(Trace.TRACE_TAG_VIEW, "performTraversals");
try {
………………………………………
} finally {
Trace.traceEnd(Trace.TRACE_TAG_VIEW);
}
必须保证traceBegin和traceEnd成对出现,并且在同一个线程里
常用快捷键说明
-
W
:放大横轴,用于查看耗时方法细节 -
S
:缩小横轴,用于查看整体情况 -
A
:将面板左移 -
D
:将面板右移 -
M
:高亮某一段耗时内容