性能优化之Systrace

        在上篇博文性能优化之TraceView中介绍了提到了TraceView分析面板中只能追踪Java函数的CPU消耗情况,本文介绍另一性能查询工具Systrace。

一:Systrace 简介:

        Systrace是Android4.1 新增的性能数据采集和分析工具,它可帮助开发者收集Android关键子系统(如surfaceflingerWindowManagerServiceFramework部分关键模块、服务)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。SystraceTraceview用途更广泛,它支持对CPUNative进程甚至Kernel线程进行性能数据采样,可帮助开发者对整个系统的性能情况进行一个详尽的分析。

      Android提供的Trace类来使用SystraceAndroid 4.1为系统中的几个关键进程和模块都添加了Systrace功能。同时应用进程也可以自己添加trace来增加跟踪内容,由于篇幅关系,关于Trace使用更多的信息请读者阅读frameworks/native/include/utils/Trace.h或者android.os.Trace。本文只关注系统自身添加的trace和用DDMS来采集数据的方法。Android官方对Systrace也有一些介绍,有兴趣的可点击打开链接查看。


二:使用方法:

        1. 采集数据,通过DDMS启动数据采集,如下图:

        

                                                                             图 1:Systrace 数据采集

       Systrace 提供系统framework关键模块的数据采集,本人在动画平滑优化中主要关注的是UI刷新平滑度,显然图形窗口相关的项都要勾上,如图1所示。


       2. 结果分析

        在按图1配置好后点击OK,将在选定的目录下得到一个trace.html的文件,通过浏览器打开这个文件,结果如图2所示。

      

                                                                       图2:trace.html 内容

         trace的内容与TraceView的Timeline面板非常相似,根据时间轴描述了函数的调用,同时还显示了CPU的状态信息。比TraceView更强大的是Systrace还采集了surfaceflinger 等系统模块的信息,这是这些信息让我找到了动画卡顿的原因,继续上图两张,分别是前一博文中动画对比的两个平台的trace图。


                                                                      图3,平台A trace 内容

                                                             图3  平台B的trace内容

         图2和图3只显示了SurfaceFlinger的部分内容,从中可以看出平台B在执行图形composition的时候有时候消耗时间在20ms内,有时间达到38ms,在fps为50的情况下20ms内不能完成composition肯定会出现卡顿啊。呵呵,可以顺利将问题转平台的哥们了。


       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值