Traceview视图分两部分,上半部分为时间片面板(Timeline Panel),下半部分为分析面板(Profile Panel)。
图5、时间片面板
X轴表示时间消耗,单位为毫秒(ms),Y轴表示各个线程,每个线程中的不同方法使用了不同的颜色来表示,颜色占用面积越宽,表示该方法占用CPU时间越长。
时间片面板可以放大/缩小,也可以指定区域放到最大,方便查看具体的过程,一般优先选择放大耗时严重的区域。
图6、分析面板
图7、分析片面板的各列的含义
参数通俗说明:
name: 方法名
其中包括parent(调用此方法的方法)和children(方法中调用的方法)两部分,children中的self为此方法中去除调用的方法外执行的时间。
- Incl CPU Time(%):此方法占用cpu的时间(总比)
- Incl Real Time(%): 同上的真实时间
- Excl CPU Time(%): children中self的时间(总比)
- Excl Real Time(%): 同上的真实时间
- Calls+Recur Calls/Total:调用次数+递归回调次数/总调用次数
- Cpu Time/Call:每次调用的占用Cpu时间。
- RealTime/Call:每次调用的真实时间。
使用TraceView查看耗时,主要关注Calls+Recur Calls/Total和Cpu Time/Call这两个值,也就是关注调用次数多和耗时久的方法,然后优化这些方法的逻辑和调用次数,减少耗时。
注意:RealTime与cputime区别为:因为RealTime包括了CPU的上下文切换、阻塞、GC等,所以RealTime方法的实际执行时间要比CPU Time稍微长一点。