android性能跟踪分析工具系列 - systrace

android性能跟踪分析工具系列 - systrace_第1张图片
37624122_1408459490727.jpg

文集目录

ps:喜欢的点赞哦 android性能跟踪分析工具系列 - 目录

systrace 案例参考:

  • Systrace的使用总结

systrace 这个工具和 GPU 呈现模式分析工具是一个类型的,都是查看 app 每帧的渲染情况的,不过2个工具还是有很大不同的

优点:

  • systrace 不仅仅可以看不同计算任务的好事,可以自动分析出存在的耗时问题

缺点:

  • 缺点和他的有点同样突出,使用上比GPU 呈现模式分析工具要麻烦的多,观看上也不是那么直观
  • systrace 对英文要求很高,这个工具可以分析出耗时问题所在,但是都是英文提醒,对于我来说......

先来看看效果图:

android性能跟踪分析工具系列 - systrace_第2张图片

systrace 如何使用

systrace 是 Android SDK 自带的工具,获取的是指定时间内android 统计进程手机的系统数据 。

在 android studio 中点击: tools - android - android devices monitors,启动 DDMS 界面


android性能跟踪分析工具系列 - systrace_第3张图片
Snip20170915_22.png

然后在 DDMS 界面坐上部分的工具栏中,点击 capture system 工具


android性能跟踪分析工具系列 - systrace_第4张图片
Snip20170915_24.png

现在就进入了 systrace 的设置界面,我们设置下截取时间,注意时间以秒为单位的,还可以设置生成文件的保存位置


android性能跟踪分析工具系列 - systrace_第5张图片
Snip20170915_25.png

然后我们开始自己的操作,操作完后,再点击 DDMS 上相同的位置,就会生成一个 .html 的文件,我们在前面的设计界面里可以设置保存位置,最后我们就可以使用 chrome浏览器打开这个文件了


如何获取信息

再来看看 systrace 给我获取到的系统信息图


android性能跟踪分析工具系列 - systrace_第6张图片

看最小面是不是有一排 F ,蓝色的 F 表示不丢帧,黄色的 F 表示有轻微丢帧,红色的 F 表示严重丢帧。我们点击一个具体的 F 看下


android性能跟踪分析工具系列 - systrace_第7张图片
Snip20170915_19.png

卧槽,都是英文,纳尼,没办法翻译工具走起吧,这里我是使用 lottie库跑了一个全屏宽的动画效果,看看这一溜的大红色,丢帧严重啊,说明lottie库展示尺寸大的动画是很卡的,软研效率好低啊。我们点击了期中一个 红色的 F,看看下面提示了3个问题:

  • Expensive Bitmap uploads
    说明有大的位图上传给 gpu,这里耗时
  • Long View#draw()
    说明view 的 onDraw 方法耗时严重,lottie 是在 canves 中进行了大量 path 绘制,并且有时会有 bitmap 生成。
  • Scheduling delay
    调度延迟,可能是 UI 线程延迟,或是 GPU 工作量大,CPU 等待 GPU 通知造成延迟。结合具体,这里是 GPU 任务量大,通知 CPU 延迟了。

每个 F 都有4个色块,点击每个色块都有详细的说明,包括耗时,问题,那么每个色块代表什么含义呢:

  • 浅绿色 performTraversals :
    这个应该是表示视图计算部分的任务,包括有变化的 view 的 measu,layout
  • 紫色 draw :
    这个应该是view 的 onDraw 计算部分
  • 深绿色 Record View#draw() :
    这部分应该是CPU 计算数据,生成每帧的纹理的计算部分
  • 深绿色 buildDrawingCache :
    这个应该是上传纹理数据给 GPU 的任务部分

官方文档

以上的色块表示什么计算任务是我个人猜测的,没找到具体的资料,有兴趣的去翻下官方文档,我的英文实在是上不了台面

  • https://developer.android.com/studio/profile/systrace-commandline.html
  • https://developer.android.com/studio/profile/systrace.html

快捷键

一般我们都会获得很多帧,这样下面的 F 就会很挤,看着不方便,我们使用一下快捷键可以放大,缩小,选择上一个/下一个 F

android性能跟踪分析工具系列 - systrace_第8张图片

代码方式使用

另外 systrace 还可以使用以代码的方式使用,获取指定方法的渲染帧,我是没这样用过,下面我抄了一段过来

通过Trace类来实现这个功能。它能够让你在任何时候跟踪应用的一举一动。在你获取trace的过程中,Trace.beginSection()与Trace.endSection()之间代码工作会一直被追踪。

android性能跟踪分析工具系列 - systrace_第9张图片

ps: 最后我想说,这个 systrace 工具我也只是能够粗浅的使用,你看其中哟很多数据的,这个还需大家自己没事都研究,有跟好的研究成果要及时通知我哦,另外喜欢的大家点个赞哦!

*** 参考文档:

  • Systrace分析UI性能
  • Systrace

你可能感兴趣的:(android性能跟踪分析工具系列 - systrace)