性能分析方法和工具

1. systrace工具

Systrace是分析Android性能问题的神器,Google IO 2017上更是对其各种强推. 是分析卡顿掉帧问题核心工具,只要能提供卡顿现场,systrace就能很好定位问题

原理

在介绍使用之前,先简单说明一下Systrace的原理:它的思想很朴素,在系统的一些关键链路(比如System Service,虚拟机,Binder驱动)插入一些信息(我这里称之为Label),通过Label的开始和结束来确定某个核心过程的执行时间,然后把这些Label信息收集起来得到系统关键路径的运行时间信息,进而得到整个系统的运行性能信息。Android Framework里面一些重要的模块都插入了Label信息(Java层的通过android.os.Trace类完成,native层通过ATrace宏完成),用户App中可以添加自定义的Label,这样就组成了一个完成的性能分析系统。另外说明的是:Systrace对系统版本有一个要求,就是需要Android 4.1以上。系统版本越高,Android Framework中添加的系统可用Label就越多,能够支持和分析的系统模块也就越多;因此,在可能的情况下,尽可能使用高版本的Android系统来进行分析

获取systrace文件

要想分析卡顿现场,必须先获取到卡顿现场的Systrace文件,获取Systrace文件的方式有两种,一种是通过AndroidSDK/tools目录下,通过monitor.bat用Android Device Monitor可视化工具得到,一种是通过python脚本获取,我本人更喜欢通过脚本获取,因为更方便一点。

1. 通过Android Device Monitor获取

(1)点击绿色按钮启动Systrace

(2)

(3)这里,我们仅仅抓取5秒钟的系统数据,没有选择特别的应用进程,抓取的内容为基础内容。

(4)点击OK开始抓取 

2. 通过python脚本抓取(推荐)

(1)装python2.X版本,Systrace脚本不支持3.X版本

(2)通过python脚本执行AndroidSDK\platform-tools\systrace\目录下的systrace.py文件

(3)可以配置一些参数,类似于通过Android Device Monitor抓取时步骤2配置的显示信息,若不选择则默认全

  1. 配置一些其他实用参数:

    • -o: 指定文件输出位置和文件名
    • -t: 抓取systrace的时间长度
    • -a: 指定特殊进程包名(自己加Label时必须加上)                                                                                                       

抓取脚本示例: 

 

使用命令抓取

systrace:

python systrace.py -t 3 -b 30480 gfx input audio view video wm sm webview camera hal res database dalvik rs disk mmc

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值