原址

TraceView简介

工欲善其事,必先利其器。要想分析Android的性能问题,比如卡顿了之类的,那么就必需掌握TraceView工具的使用。
TraceView 是 Android SDK 中内置的一个工具,它可以加载 trace 文件,用图形的形式展示代码的执行时间、次数及调用栈,便于我们分析,以此来优化 App 运行效率。

生成trace文件

在进行分析以前,必需要生成trace文件,可以用下面的三种方法生成trace文件:

插入代码生成trace文件

1
2
3
Debug.startMethodTracing("test.trace")
……
Debug.stopMethodTracing();

然后把 trace 文件从手机导出来就可以进行分析了,这种方法的优点是可以精确的控制追踪的起点和终点,缺点是步骤繁琐了一些。

使用Android Monitor

使用Android Studio 内置的 Android Monitor 也可以很方便的生成 trace 文件到电脑。
在 CPU 监控的那栏会有一个类似秒表的按钮,未启动应用时是灰色,不可点击,应用启动后变成可以点击状态,点击之后开始追踪,再次点击结束追踪,并生成后缀为.trace的 tarce 文件。

使用DDMS

DDMS 是 Android 调试监控工具,用来分析 trace 文件更为直观,菜单栏点击Tools->Android->Android Device Monitor,便可以打开DDMS,如图:

我们可以用 DDMS 打开前面方法生成的 trace 文件,File -> Open File,然后选择文件即可。
或者也可以生成 trace 文件。
选择需要调试的进程,在上面点击Start Mothod Profiling按钮:

此时会弹出一个选项框:

  • Sample base profiling:抽样监听,以指定的频率进行抽样调查,一般不要超过5s,需要较长时间获取准确的样本数据。
  • Trace base profiling:整体监听,项目中所有方法都会监听,资源消耗比较大。

点击OK后,边开始了监听,再次点击mothod profiling按钮,结束监听。

DDMS会打开trace文件,此时就可以对trace文件进行分析了。

trace文件分析

如图:

通过界面图我们可以看到整个界面可以分为上下两个部分,上面是你测试的进程中每个线程的执行情况,每个线程占一行,下面是每个方法执行的各个指标的值。
上面一部分是测试进程的中每个线程运行的时间线,x轴表示时间,色块区域可放大,每个区域代表每个方法的执行时间,不同的颜色代表不同的方法,颜色长度代表占用时间。y轴表示每一个独立线程。
下面一部分Name为所选择的颜色区块所代表的性能分析。

属性介绍:

  • Incl cpu time:某方法占用CPU总时间(父+子)。
  • Excl cpu time:某方法本身占用cpu时间(父),即总时间减去子方法的时间。
  • Incl Real time:某方法真正执行总时间(父+子)。
  • Excl Real time:某方法自身执行时间(父),即总时间减去子方法的时间。
  • Calls+RecurCall: 调用次数+递归调用次数。
  • Cpu time/Call:平均每次调用占用CPU时间。
  • Real time/Call :平均每次调用所执行的时间。

点击某一个方法,可以看到它的详细信息:

  • Parents:选中方法的调用处
  • Children:选中方法调用的方法

打开每个方法,会显示Paents和Children(即父方法和子方法),以及分别所占用时间。
根据上图,很轻易的就找到了createBitmp方法占用了主线程中大量的时间,是可以优化的对象。

一些分析 trace 文件的方法:

  • 从上半部分图中先直观的分析那些函数运行的时间较长,点击色块区域下面会自动展开该函数。
  • 点击 TraceView 中的 Cpu Time/Call,按照占用 CPU 时间从高到低排序
  • 哪些方法调用次数非常频繁
  • 点击 TraceView 中的 Calls + Recur Calls/Total ,按照调用次数从高到底排序

Android 性能优化之TraceView的使用相关推荐

  1. Android 性能优化工具 TraceView 简单使用

    背景 最近产品以及测试大佬反应快搜桌面进入搜索页面跳转较为缓慢,影响体验,为了优化这个问题,特地学习Android 性能优化工具 TraceView的 简单使用,这才有了本文. 正文 如下图打开and ...

  2. Android 性能优化

    为什么80%的码农都做不了架构师?>>>    原文作者:鸿洋 原文地址:点我跳转原文 一般情况下,我们谈性能优化基本上会从以下几个方面: App启动速度优化 UI流畅度优化 内存优 ...

  3. Android性能优化典范笔记(1)-GPU绘制性能优化

    Android性能优化典范笔记(1)-GPU绘制性能优化 你还可以再Github上找到我的这篇文章:https://github.com/onlynight/ReadmeDemo/tree/maste ...

  4. Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - TraceView Android性能分析工具 消除卡顿 什么是卡顿及卡顿的衡量标准 产生卡 ...

  5. Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - TraceView Android性能分析工具 为什么内存优化? 在一个商业项目中,很有可能因 ...

  6. Android性能优化典范(转)

    本文转自:http://hukai.me/android-performance-patterns/ 2015新年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3 ...

  7. Android 性能优化工具

    Android 性能优化工具 这段时间总结了一些常用的性能优化工具,当然这些并没有包含全部的工具,下面稍微对这些工具做个简单的总结: 1.应用codeReview工具 StrictMode 检测应用主 ...

  8. Android性能优化典范第一季

    2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关 ...

  9. Android性能优化 笔记

    说明 这篇文章是将很久以来看过的文章,包括自己写的一些测试代码的总结.属于笔记的性质,没有面面俱到,一些自己相对熟悉的点可能会略过. 最开始看到的性能优化的文章,就是胡凯的优化典范系列,后来又陆续看过 ...

最新文章

  1. 增强现实:一场正在到来的医疗革命
  2. springboot项目打包运行
  3. cocosStudio制作ScrollView并在cocos2dx 3.0中使用。
  4. linux自定义和使用 shell 环境(一)
  5. AXI_02 AXI4总线简介(协议、时序)
  6. 【java】错误 找不到或无法加载主类
  7. 【渝粤教育】21秋期末考试建筑力学与结构10126k2111
  8. linux切换到管理员失败解决方法(因为误操作导致不能切换到管理员用户)
  9. python爬虫--下载酷我音乐
  10. 如何使用Blender建模“苹果”
  11. SpringCloud微服务架构学习
  12. Codeforces 1293 E. Xenon‘s Attack on the Gangs —— 树上记忆化搜索,单点加改成区间加,有丶东西
  13. 2021CCPC女生专场
  14. 猿创征文 | openGauss 高级特性 DB4AI 进行 AI 开发
  15. Linux rpm -ivm,Linux常见命令
  16. 浏览器大战中的搜狗浏览器
  17. 基于含有非期望产出的SBM模型的共同前沿和群组前沿的DEA效率测算
  18. 【转载】Go对比Python的优点
  19. java 找工作那点事儿
  20. 全新领域——前端处理高并发

热门文章

  1. oracle—新建用户
  2. 互联网+ 何人能挡?带着你的Code飞奔吧!
  3. Log4net 配置实例
  4. 一段MYSQL的插入代码
  5. 顶级的CSS和Javascript动画框架
  6. WebHubBot 网络爬虫
  7. SpringAMQP+RabbitMQ调试中的问题解决
  8. NLP --- 隐马尔可夫HMM(EM算法(期望最大化算法))
  9. Xstream-1 原理
  10. 一、基础篇--1.1Java基础-包装类的装箱和拆箱