您的位置:首页 > 移动开发 > Android开发

Android开发响应检测及内存分析 - 【TraceView】

2015-07-08 15:13 465 查看
    Android SDK提供一个TraceView的工具,它可以通过分析生成的跟踪文件给出各项数值以及图形化的结果。

DDMS 中 TraceView 使用示意图如下,开发人员可以通过选择 Devices 中的应用后点击 


按钮 Start Method Profiling(开启方法分析)和点击


 StopMethod Profiling(停止方法分析),稍等一下…视图就会呈现…好!



   通过TraceView 显示的信息中很清楚看到所有被调用到的函数,以及函数调用的耗时和调用的次数。通常TraceView 视图会分成两主要部分:即 Timeline (半部时间线面板)和 Profile(下半部分析面板)。Timeline左边窗口显示的是测试数据中所采集的线程信息。

   Timeline右边窗口所示为时间线,时间线上是每个线程测试时间段内所涉及的函数调用信息。这些信息包括函数名、函数执行时间等。开发者可以在时间线窗口中移动时间线纵轴。纵轴上边将显示当前时间点中某线程正在执行的函数信息。

例如:



   由图可知,本次测试 main线程还生成了其他线程的信息。当前的时间点,主线程中调用的了Utils 类中的getApplist 函数。

下半部分 Profile 窗口是 TraceView 的核心界面,它主要展示了各个函数调用的情况(当然也可以选择某个线程的各种信息),包括 CPU 使用时间、调用次数、耗时等信息。通常默认情况是以对CPU消耗进行排序。

       列如:

       1.假设你的应用因耗电大而导致手机发热,那么你可以通过 Incl cpu time% 或Incl cpu time 两列进行排序查找代码中长时间占用CPU的函数。          

       2.假设想通过获得每个函数的调用时间,并进行相应的代码优化。那么可以通过RealTime/Call 由高到低排序。如下:mainActivity的onCreate函数耗时1561毫秒...干嘛了都?我看看哈



   所有的Time都是以毫秒计算。每列具体含义及作用如下:

1. Incl表示将所有子函数耗时也计算在内,Excl则表示不包括子函数的调用时间。对比可以确定耗时操作发生是自身还是子函数中。

2. Cpu Time表示占用cpu执行的时间,RealTime包括Cpu Time以及等待、切换的时间等,所以一般都大于Cpu Time。对比可以判断耗时操作是否在cpu执行段内。

3. 上面四个指标对应的%表示函数在总时间的占比。方便查看某个函数的时间占比。

4. Calls+RecurCalls/Total表示被外部调用次数+递归次数/总次数。可以查看调用次数是否符合自己预期。

5. Cpu Time/Call, Real Time/Call表示总的Cpu Time及Real Time与总调用次数的比例。查看每次调用的耗时,一般可通过简单此项确定每个函数的性能。当然,TraceView不仅仅这些功能,还可以通过搜索来查找指定函数的调用信息等
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息