Android 性能专项之 Memory Monitor 工具-cpu

本文介绍如何使用TraceView工具分析Android应用性能,通过解读非独占时间和独占时间,理解InclCpuTime与ExclCpuTime的区别,并指导开发者如何定位和优化性能瓶颈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

观测方法执行的时间,点击cpu界面的clock图标(Start Method Tracking), 一段时间后再点击一次, trace文件被自动打开,


非独占时间: 某函数占用的CPU时间,包含内部调用其它函数的CPU时间。
独占时间: 某函数占用CPU时间,但不含内部调用其它函数所占用的CPU时间。

分析TraceView数据

打开后的profiling数据显示为上下两部分,Timeline区域和Profile区域:

上面的timeline区域是你测试的应用中每个线程的执行情况,每个线程占一行;并且一条timeline上的每一块都表示一个执行的method;每个method用不同的颜色表示。

下面的profile区域是按照每个方法所占的incl CPU time %进行排序将它们显示出来。其中每个函数显示的数值包括以下几种:

  1. Incl Cpu Time(%): Include意味着不仅仅是本身执行所占的时间(比),还包括其调用的函数(嵌套)的执行占用时间(比)
  • Excl Cpu Time(%): 的
  • Incl Real Time: 同1类似
  • Excl Real Time:同2类似
  • Calls + Recur Calls / Total:它表示这个方法执行的次数,这个指标中有两个值,一个Call表示这个方法调用的次数,Recur Call表示递归调用次数
  • Cpu Time / Call:每次调用执行该函数所用的cpu time。
  • Real Time / Call: 同6类似

所以我们在实际的分析过程中,可以从某一项入手,比如先看第一项Incl Cpu Time(默认是按照这一项将所有的方法排序的,当然我们也可以点击其他项,从而使用其他项排序),然后从上到下,也就是观察占用CPU最多的几个函数,看看哪一个是我们可以控制并且有可能可以优化的。在观察某一个函数的时候,可以将其点开,查看它的所有child,重点观察占用比例最高的一两个,然后点击进去一步步的跟踪。其中或许还要观察其他参数,比如calls + Recur Calls / Total看看是否有多余的调用等。总之只要细心还是很容易找到可以优化的点的。


我们如何判断可能有问题的方法?

通过方法的调用次数和独占时间来查看,通常判断方法是:

  1. 如果方法调用次数不多,但每次调用却需要花费很长的时间的函数,可能会有问题。
  2. 如果自身占用时间不长,但调用却非常频繁的函数也可能会有问题。


原文链接:http://www.jianshu.com/p/216b03c22bb8


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值