Systrace的使用

2020/09/14 Android

Systrace 的使用

在性能分析中,Android 官方提供了一种方法 Systrace。Systrace 支持分析多个模块,比如帧率,是否丢帧。以及可以自定义测量代码。检测出代码执行时间。还有很多更高端的功能,目前也正在摸索中。

Systrace 生成 trace.html。通过分析 trace.html文件,就可以知道在哪里出现了性能问题。使用 SYstrace 生成 trace.html 有两种方式,一种是通过 python 脚本生成,还一种就是通过 Device Monitor

通过 python 脚本生成

使用的 python 脚本位于 Android 的 SDK目录下。默认位于 user/AppData/Local/Android/Sdk/platform-tools/systrace。使用的脚本名为 systract.py

支持的 Python 版本为 2.7的版本。不支持3.X版本。在 cmd 窗口首先 cd 到脚本文件夹地址处。在 windows 下使用脚本命令。

python systrace.py -t 10 sched view am -a <package-name>

-t 10 的意思是检测10秒的记录。 sched为记录 cpu 的信息。 view为记录绘制流程这些。am为ActivityManager。

这样就通过脚本在当前目录生成了 tract.html。使用 Chrome 浏览器打开。systract.py命令的一般用法是:

systrace.py [options] [category1 [category2 ...]]

[options] 是一些命令参数,[category] 等是你想检测的模块,比如view代表view系统(包含绘制流程),am代表ActivityManager(包含Activity创建过程等);

通过脚本生成的时候,我这里出现了一个报错 No module named win32con。还没有解决,应该是 python 库的问题。 所以我使用的是 DDMS 生成的 tract.html。

通过 Device Monitor 生成

首先需要找到 Device Monitor, Device Monitor 位于 sdK 路径下的 Sdk/tools/lib/monitor-x86_64。 默认路径为 user/AppData/Local/Android/Sdk/tools/lib/monitor-x86_64。 打开 monitor.exe 即可。 在打开的时候需要关闭 Android Studio。否则会导致端口被占报错。

打开后选择设备的应用进程,然后点击设备下工具栏的倒数第二个选型。如图所示。

Device Monitor界面

打开之后,会有不同的选项。第一个是 将 trace.html 保存的位置。 第二个是检测多少秒的记录。第三个选项是选择记录的进程。 第四个选项就是选择需要记录的哪些模块。如图。

Systrace选择界面

点击确定时候,然后开始操作你想要检测的界面。同时,可以加入代码单独记录你想要检测的地方。

Trace.beginSection("gogoin");

Trace.endSection();

两者相互对应,有一个 begin 就需要一个 end。 同时两者需要在同一个线程处理。

生成 tract.html 之后,可以进行分析。

Trace界面

红箭头指向字符 F 的地方为丢帧的地方,绿色表示帧率正常,每帧控制在 16ms 。黄色表示轻微丢帧,红色表示丢帧严重。可以点击红色处,然后会出现耗时警告,耗时时长。

箭头指向的紫色部分则表示我们使用代码 Trace.beginSection("gogoin");的结果。它的耗时表明了我们在代码开始 begin 到 end 经历的时间。 还有一些其他的过程耗时,都可以通过点击来查看。

其他

Trace.html 还有很多分析的地方。需要之后继续学习,补充该文档。

引用

Search

    Table of Contents