文章概览:html
TraceView概述java
Traceview是android平台配备一个很好的性能分析的工具。它能够把trace文件转化为图形,经过图形化的方式让咱们了解咱们要跟踪的程序的性能。当你有一个trace 的日志文件时(经过在程序添加trace代码或使用DDMS或studio生成),你可使用TraceView加载日志文件,Traceview 能够帮助你调试你的应用和分析它的性能。android
trace文件的3种生成方式markdown
第一种,使用android studio 直接生成(推荐)
操做:
1,点击Monitors–>CPU栏目上的小闹钟(以下图),开始记录。
2,操做你手机须要分析的功能。好比,UI卡顿那块,应用耗时那块..
3,在此点击Monitors–>CPU栏目上的小闹钟(以下图),结束记录,这是会生成trace文件。(能够点击studio 左侧的Captures。它里面的Method Tracing 里面能够看到)
4,这个时候,studio会自动打开这个trace文件。(很惋惜,此次说的不是它)函数
第二种,嵌入代码代码生成
使用
android.os.Debug.startMethodTracing(String traceName);
android.os.Debug.stopMethodTracing();
这两个方法添加到你想分析的那些代码中,当程序运行了这段代码,就会在/sdcard
目录中生成一个traceName命名的trace文件。工具
TraceView界面及参数介绍性能
界面说明
界面主要有上下两个面板,上面是时间线面板,下面是分析面板。时间线面板描述了线程和方法的开始和结束,分析面板提供了一个方法中发生的状况信息。时间线面板又能够分为两个部分(左右),暂时分为三个部分。以下图标记ui
第一部分(上面板左侧).net
数据中所采集的线程信息,好比main线程等等线程
使用TraceView分析,定位问题
上面给几个参数标记了重要,下面咱们来想下为何呢?
咱们在分析耗时的时候通常有两种状况:
- 1,调用次数很少。可是,自己就很是耗时。
- 2,自己不是很耗时。可是,调用很是频繁。
1,第一种状况,咱们可使用 Cpu Time 来查看它的耗时状况。
2,第二种状况,咱们可使用 Calls+RecurCalls/Total 来查看它的调用状况。
如今,咱们模拟,使用CPU Time来分析
第一步,点击CPU Time列,让函数从高到底排列,并找到咱们项目的方法点击进入,以下图
咱们发现里面分为Parents和Children。
Parents:自身函数。
Children:调用内部的函数。
而后,咱们找到了drawRegionV2的函数
第二步,点击drawRegionV2函数,一步步找进去,getPoints()->toFloat(),最后,以下图
第三步,查看咱们的代码,并解决问题。
java代码
最后,发现了ondraw里面的toFloat()函数的BigDecimal。执行一次getPoints函数就会建立好几个函数的BigDecimal对象,并且仍是在Ondraw里面。
分析到这里,咱们已经定位到问题了。
相关资料
https://developer.android.com/studio/profile/traceview-walkthru.html
https://developer.android.com/studio/profile/traceview.html#traceviewLayout
http://blog.csdn.net/androiddevelop/article/details/8223805
http://blog.csdn.net/u011240877/article/details/54347396