性能分析工具TraceView

来源:互联网 发布:淘宝死多少人 编辑:程序博客网 时间:2024/06/05 03:32

       俗话说,工欲善其事,必先利其器,好的工具有时可以使得我们事半功倍,接下来介绍性能分析利器–TraceView。

      1  使用TraceView

           Android Studio中,按照如下步骤打开TraceView,Tools/Android/Android Device Monitor,然后会弹出如下界面:

                             

        选中列表中地图进程,然后点击上右面中间图片中工具条上的start method profiling,接下来弹出的对话框如上图右边图片所示,其中Sample based profiling以固定的频率像VM发送中断并搜集调用栈信息。低版本手机也是采用该方式来采集样本的默认是1毫秒采集一次。精确度和采集的频率有关间隔频率越小会越精确但运行也会相应的更慢。Trace based profiling,这个选项是不论多小的函数都会跟踪整个函数的执行过程所以开销也会很大。运行起来会非常的慢不适合检测滑动性能。一般情况用第一种默认1000微妙的间隔就足够了。我们使用默认的,点击OK。操作手机,然后再次点击启动按钮,这是会停止采集,弹出如下界面:

           

       从上图可以看到,TraceView的UI分为上下两大面板,上面的面板是Timeline Panel,下面的是Profile Panel,下面我们来"解毒"每个面板的主要用途和如何追踪性能问题。

  • Timeline Panel

            上半部分的Timeline Panel左边测试数据中采集的线程信息,比如main线程,地图Sensor线程BMSensorThread和其他的线程等,右边的面板显示的是时间线上每个线程测试         时间段内涉及的函数调用信息。内容越丰富,代表时间段内执行的函数越多,这可以看到线程的繁忙状态,也可以看出线程的启动时间和结束时间等。

  • ProfilePanel:

           下半部分的面板是TraceView的核心,里面显示的内容很多。它主要显示了某个线程在Timelin Panel中选择线程中各个函数的调用情况,包括函数调用次数,CPU使用时间等        等,从这些数据里面可以窥见性能问题产生的原因。        

     2 详细内容

         ProfilePanel中各列含义,如下表:

 

列名
含义
Name该线程运行过程中所调用的函数名称,比如(run方法)Incl Cpu Time某函数占用CPU时间(包括内部调用其他函数CPU时间)Excl Cpu Time某函数占用CPU时间(不包括内部调用其他函数所占用的CPU时间)Incl Real Time某函数运行的真实时间以毫秒为单位(包括调用其他函数所占用的真实时间)Excl Real Time某函数运行的真实时间以毫秒为单位(不包括调用其他函数所占用的真实时间)Call+Recur Calls/Total某函数被调用次数以及递归调用次数与总调用次数的百分比Cpu Time/Call某函数调用CPU时间与调用次数的比。相当于该函数平均执行时长Real Time/Call某函数调用CPU时间(Incl Real Time)与调用次数的比。等价于该函数平均真实时长

         从函数调用情况,可以找出函数所在线程分布,了解函数前后路径和执行情况,可以找到主线程中消耗时间比较多的函数,也可以查看部分GC原因和位置。

        我们需要重点关注的是Cpu Time/Call   平均执行时间较长的函数和Call+Recur Calls/Total,调用次数非常频繁的函数。从这些数据里面找出性能瓶颈的真正原因,这才能真正的    定位到问题所在,为下一步的问题分析和解决做好必要的前提准备。

        请仔细研究各线程,函数运行的参数!

原创粉丝点击