【Android — 性能优化】启动速度分析工具 — TraceView[通俗易懂]

【Android — 性能优化】启动速度分析工具 — TraceView[通俗易懂]TraceView是AndroidSDK中内置的一个工具,它可以加载trace文件,用图形的形式展示代码的执行时间、次数及调用栈,主要便于我们分析及优化方法的执行。

大家好,欢迎来到IT知识分享网。

不断学习,做更好的自己!💪

视频号 CSDN 简书
欢迎打开微信,关注我的视频号:程序员朵朵 点我 点我

一、简介

TraceViewAndroid SDK 中内置的一个工具,它可以加载 trace 文件,用图形的形式展示代码的执行时间、次数及调用栈,主要便于我们分析及优化方法的执行。

二、官方文档

参考:TraceView 使用文档

三、使用

1. 通过 Android studio 自带的 traceview 查看

通过 Android studio 打开 Android profiler 点击其中的 CPU就会有以下的界面:
在这里插入图片描述
如上图所示,CPU Profiler的视图包括以下内容:
App timeline:显示CPU在执行过程中的时间轴。
②线程 timeline:显示线程列表以及每个线程在某个时间段占用的CPU的资源情况。
CPU timeline:列出CPUApp运行过程中CPU使用情况。
Method Trace:在指定线程中,执行的方法栈,横行表示执行的时间轴,纵向表示方法执行的调用轴。

使用步骤

  • 打开CPU Profiler界面
  • 点击下方的红色圆点,开始记录(Record)堆栈(此时按钮变灰色),记录一段时间段后,再点击下停止记录(此时按钮变红色)
  • 在②区域选择你用分析的线程
  • 在③区域中选择要分析的CPU片段(只能有记录的CPU片段)
  • 查看④区域,就会有一系列的执行方法队列显示出来,通过横向查看可以看出某个方法的执行时间(横向时间越长,执行的时间越长),通过纵向表示方法的调用关系。

技术说明
②区域中,线程占用CPU资源,会有不同颜色标记:

  • 绿色: 线程处于活动状态或准备好使用CPU。也就是说,它处于”运行”或”可运行”状态。
  • 黄色: 线程处于活动状态,但是在完成其工作之前,它正在等待I / O操作(如文件或网络I / O)。
  • 灰色: 线程正在睡眠,不会消耗任何CPU时间,当线程需要访问尚未可用的资源时,有时会发生这种情况。要么线程进入自愿性睡眠,要么内核使线程休眠,直到所需的资源可用。

④区域中,不同的方法也会颜色也有所不同:

  • 橙色:系统方法
  • 蓝色:第三方API(包括java语言的api
  • 绿色:App自身方法

2. 通过 Android SDK 自带的 Debug

  • 在开始记录的点写上代码 Debug.startMethodTracing("tracePath") ;
  • 在终止记录的点写上代码 Debug.stopMethodTracing() ;
  • 通过 adb pull /mnt/sdcard/tracePath.trace .将 trace 导出指定的文件夹中
  • 通过 Android studio 打开 trace 文件,界面同 CPU Profiler 差不多。
    在这里插入图片描述
    优点
    能清晰分析指定业务、功能块的方法执行情况(代码控制)。

3. 通过 DDMS 中的 traceview 查看

前期准备工作(以windows系统为基准)
1、下载Android SDK,下载地址就各显神通了。
2、解压或者安装Android SDK
3、解压后的目录下的{sdk.dir}\tools配置到Path环境中。

使用说明

  • 打开window命令指示符,即cmd命令

  • 在命令行中输入monitor或者ddms(区分版本),打开界面
    在这里插入图片描述

  • 如图点击红色圈圈按钮开始记录,再次点击后终止记录且弹出以下界面
    在这里插入图片描述
    ①线程timeLine:线程在执行过程消耗CPU/时间
    ②执行TimeLine: 时间轴
    ③方法详细信息轴:方法以及其调用方法的执行/消耗CPU时间

  • 查看main线程,查看执行时间长的时间段(②区域中同一个颜色起止时间)并点击他,在③区域中会弹出对应的方法栈信息,你就会发现有个Thread.sleep方法阻塞的main线程。

技术说明

  • Incl Cpu Time:方法在CPU中执行所有时间(包含其调用的方法所消耗的时间)
  • Excl Cpu Time: 方法在CPU中执行的时间(不包含其调用的方法所消耗的时间)
  • Incl Real Time:方法运行消耗的所有时间(包含子方法)
  • Excl Real Time:方法运行消耗的时间(不包含子方法)
  • Calls + Recur Calls/Total :方法调用、递归次数(重要指标,防止死循环)
  • Cpu Time/Call :该方法平均占用 CPU 的时间(重要指标,可以看出单个方法占用CPU的平均时间,但是要防止在个别调用处出现长时间占用,然后被平均了)
  • Real Time/Call:平均执行时间,包括切换、阻塞的时间(重要指标,可以看出单个方法执行的平均时间值,但是要防止在个别调用处出现长时间调用,然后被平均了)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/25781.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信