必威体育Betway必威体育官网
当前位置:首页 > IT技术

TraceView 的使用

时间:2019-09-28 15:45:31来源:IT技术作者:seo实验室小编阅读:79次「手机版」
 

traceview

TraceView 的使用

TraceView 简介

  1. TraceView 是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot,对java代码以及framework层代码进行分析。(native方法无法直接分析)

  2. TraceView 本身只是一个数据分析工具,而数据的采集则需要使用 Android SDK 中的 Debug 类或者利用 DDMS 工具。

  3. 官方文档地址:

https://developer.android.com/studio/profile/traceview.html

TraceView 的生成

traceview的使用方法有两种:

  1. 代码调用:

    在一些关键代码段开始前调用 Android SDK 中 Debug 类的 startMethodTracing 函数,并在关键代码段结束前调用 stopMethodTracing 函数。这两个函数运行过程中将采集运行时间内该应用所有线程(注意,只能是 Java 线程)的函数执行情况,并将采集数据保存到 /mnt/sdcard/ 下的一个文件中。

/**
* 创建
*/
private void onCreate(){
    // 生成traceView的起点,保存traceView 的名称(路径:/mnt/sdcard/fileName)
    Debug.startMethodTracing("fileName");
}

/**
* 销毁
*/
private void onDestroy(){
    Debug.stopMethodTracing();
}
优缺点:分析精准;分析范围窄;需要编码
适用场景:分析检测某一个方法的性能时适用
  1. 借助DDMS工具:

    DDMS 中 TraceView 使用示意图如下,通过选择 Devices 中的应用后点击开始

    按钮 Start Method Profiling(开启方法分析)和点击结束Stop Method Profiling(停止方法分析)

开启方法分析后对应用的目标页面进行测试操作,测试完毕后停止方法分析,界面会跳转到 DDMS 的 trace 分析界面

优缺点:分析范围广,操作简单,干扰多
适用场景:分析一个过程

###TraceView 的分析

一. 通过AndroidStudio 打开trace文件,展示的界面如下:

将方法调用顺序可视化,方法执行的时间也可视化了。

tips:Android studio 打开后,面板中文字特别小,此时可以通过放大镜来查看。(Mac 快捷键:option + command + 8)

二. 通过ADM打开trace文件,展示的界面如下:

TraceView 界面比较复杂,其 UI 划分为上下两个面板,即 Timeline Panel(时间线面板)和 Profile Panel(分析面板)。上图中的上半部分为 Timeline Panel(时间线面板),Timeline Panel 又可细分为左右两个 Pane:

  1. 时间面板
    1. 左边 Pane 显示的是测试数据中所采集的线程信息。
    2. 右边 Pane 所示为时间线,时间线上是每个线程测试时间段内所涉及的函数调用信息。这些信息包括函数名、函数执行时间等。、
    3. 可以在时间线 Pane 中移动时间线纵轴。纵轴上边将显示当前时间点中某线程正在执行的函数信息。
  2. 分析面板
    1. Profile Panel 是 TraceView 的核心界面,其内涵非常丰富。它主要展示了某个线程(先在 Timeline Panel 中选择线程)中各个函数调用的情况,包括 cpu 使用时间、调用次数等信息。而这些信息正是查找 hotspot 的关键依据。
    2. 下表列出了 Profile Panel 中比较重要的列名及其描述:

举个例子:

private void init(){
    a();
    b();
    c();
    d();
    
    for(int i=0;i<100;i++){
        System.out.print("i = " + i);
    }
}

###TraceView 的实践

  1. 先通过TraceView找到 hotspot,一般hopspot函数有以下两种:

    1. 一类是调用次数不多,但每次调用却需要花费很长时间的函数。
    2. 一类是那些自身占用时间不长,但调用却非常频繁的函数。
  2. 举个例子:

    如上图,获取sharedPreference 耗时很严重,阻塞主线程,将该操作抛到异步线程。

###总结

性能优化就像海绵中的水,挤一挤总会有的。同时,性能优化并不是一劳永逸的工作,而是一个漫长而具有挑战的任务;项目的各个阶段都会有性能上的问题,在用户体验的基础上持续进行打磨,持续保持产品的良好性能才能赢得好口碑。(和保持身体健康是一个道理)

相关阅读

FastDFS使用流程

一、什么是FastDFS?    FastDFS 是用 C 语言编写的一款开源的分布式文件系统,对文件进行管理,主要功能包括:文件存储、文件同步、

C#中Directory.GetFiles() 函数的使用方法(读取目录中

转自:http://www.365jz.com/article/24023   C#中Directory.GetFiles(string path , string searchPattern, SearchOption sea

学习笔记(VO框架大家,电脑摄像头使用)

UBUNTU18安装rosVO框架的搭建 高翔书中的源程序出错 cmake…时说没有.opencv31,我的电脑中装的时4.0版本,需要重新安装3.1安装过程中,3.1也出错

时间戳的使用:什么时候该用绝对值,什么时候该用相对值?

就像生物体一样,信息也会随着时间的推移而更新。今年有用的信息,过几年可能就没那么重要了。所以给你的内容加上时间戳是很重要的。

Linux中apt与apt-get的区别以及详细使用方法

本文转载自:Linux中apt与apt-get命令的区别与解释以及Linux命令apt-get使用方式Ubuntu 16.04 发布时,一个引人注目的新特性便是 apt

分享到:

栏目导航

推荐阅读

热门阅读