Android 性能测试工具使用说明

来源:互联网 发布:淘宝店铺标志 编辑:程序博客网 时间:2024/06/05 23:18

一、Android studio自带性能测试工具

1.Memory Monitor

1)使用说明

功能:实时监测应用的内存使用情况,查找内存泄漏。

这里写图片描述

  • Initiate GC(橙色小卡车):就是手动调用GC,我们在抓内存前,一定要手动点击 Initiate GC按钮手动触发GC,这样抓到的内存使用情况就是不包括Unreachable对象的(Unreachable指的是可以被垃圾回收器回收的对象,但是由于没有GC发生,所以没有释放,这时抓的内存使用中的Unreachable就是这些对象)
  • Dump Java Heap(紫色带向下的箭头):获取hprof文件(hprof文件是我们使用MAT工具分析内存时使用的文件),但这里直接产生的文件MAT还不能直接使用,需用转换成标准的hprof文件。可以使用AndroidStudio转换或者用hprof-conv命令转化,具体不详细介绍,网上可以查到。

    这里写图片描述
    图1

  • Start Allocation Tracking(紫色带圆圈):开始分配追踪,第一次点击可以指定追踪内存的开始位置,第二次点击可以结束追踪的位置。这样我们截取了一段要分析的内存,等待几秒钟AndroidStudio会给我们打开一个Allocation视图(感觉和MAT工具差不多,不过MAT工具更加强大,我们也可以获取hprof文件,使用MAT来分析)

    这里写图片描述
    图2

2)数据说明

  通过图1红色框内的信息可以知道,SettingFragment存在内存泄漏,正常情况当退出之后,SettingFragment应该被回收,我们打开代码看一下。
这里写图片描述
果然类中有内部类线程,默认持有SettingFragment,线程没有执行完成一直不能释放,造成内存泄漏。

  通过图2我们首先看到9号线程它占用了百分之55.82的内存,那么我们就点开它看一下,每次都只要点开其中内存占用最大的就可以。查找里边占用内存大的除系统方法以外的方法,进行分析。确认是否需要优化。

2.CPU Monitor

1)使用说明

功能:实时监测应用的CPU的使用情况。

这里写图片描述

如上图中,点击Start Method Tracing按钮,过一定时间,再点击该按钮,则停止Method Tracing。稍等几秒种,Android Studio就会打开一个有助于我们进行分析及优化项目的界面。如下图:

这里写图片描述

2)数据说明

图形主要是方法所调用时间信息,对应的信息有:

  • Name:方法名称
  • Invocation Count:方法调用次数
  • Inclusive Time:方法所用时间,包括所有调用的子方法的时间
  • Exclusive Time:仅仅是方法本身调用的时间

可以根据显示的时间来进一步看方法是否需要进行对应的优化处理,通常我们是把焦点放在耗时非常多的方法上进行优化

3.GPU Monitor

1)使用说明

功能:可视化显示渲染一个UI花费时间。需打开GPU呈现模式分析才可使用。打开方法(见:二、手机自带性能测试工具)
这里写图片描述

2)数据说明

  在Android系统中是以每秒60帧为满帧的,那么只要将1秒÷60帧,就能得出每帧为16毫秒(ms)时为满帧的界限,每帧快于16ms即为流畅,而这根绿线所标示的高度即为16ms线,低于绿线即为流畅。
  不同颜色所代表的含义:

  • Draw (蓝色):表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。
  • Process(红色):表示渲染引擎执行显示列表所花的时间,view越多,时间就越长。
  • Execute(橙色):表示把一帧数据发送到屏幕上排版显示实际花费的时间。这个时间一般都很短。

注意:Draw + Process + Execute = 完整显示一帧 ,这个时间要小于16ms才能保存每秒60帧(即1000秒/60帧)。如果持续超过16ms用户会明显感知卡顿。

4.Network Monitor

功能:实时监测应用的网络使用情况。(操作简单不做具体说明)

5.HierarchyViewer

1)使用说明

hierarchyviewer.bat是sdk自带的工具,在tools文件夹下。双击即可打开。

这里写图片描述

在此页面,加粗显示的就是当前进程,点击load view hierarchy就可以分层查看布局。

这里写图片描述

2)数据说明

这里写图片描述
  View Hierarchy可以将一个Activity中的所有控件的层次结构从左到右显示了出来,其中最右部分是最低一层的控件。
  view表明这个文本控件没再包含其他子控件了,只有1个就是它本身。而下方的带颜色的三个圆圈指示灯,分别说明了在测量(measure)、布局(layout)以及画视图(draw)三个阶段,这个控件所占用的时间百分比,如果是绿色的,表示该控件在该阶段比起其他的50%的控件的速度要快,为黄色的表示比起其他的50%的控件的速度要慢,为红色的则表示该控件在该阶段的处理速度是最慢的。
  View Hierarchy 可以帮助你找到性能问题。只要看每个View节点的性能指标(颜色点,时间)就可以,你可以看到测量(布局或绘制)最慢的View对象是哪个,这样你就能快速确定问题所在。
  注意,低性能并不表示一定有问题,特别像是ViewGroup对象,View的子节点越多,结构越复杂,性能越差。

二、手机自带性能测试工具

1.显示GPU过渡绘制

1)使用说明

设置-开发者选项-调试GPU过度绘制-显示过度绘制区域(过度渲染等,不同机器可能不同)

这里写图片描述

2)数据说明

开启后,启动我们的应用,可以看到各种颜色的区域,其中:
蓝色 1x过度绘制
绿色 2x过度绘制
淡红色 3x过度绘制
红色 超过4x过度绘制

最理想的是蓝色,一个像素只绘制一次,合格的页面绘制是白色、蓝色为主,绿色以上区域不能超过整个的三分之一,颜色越浅越好。

2.GPU呈现模式分析

1)使用说明

设置-开发者选项-GPU呈现模式分析

这里写图片描述

2)数据说明

  首先,在Android系统中是以每秒60帧为满帧的,那么只要将1秒÷60帧,就能得出每帧为16毫秒(ms)时为满帧的界限,每帧快于16ms即为流畅,而这根绿线所标示的高度即为16ms线,低于绿线即为流畅。
  屏幕下方的柱状图每一根代表一帧,其高度表示“渲染这一帧耗时”,随着手机屏幕界面的变化,柱状图会持续刷新每帧用时的具体情况(通过高度表示)。那么,当柱状图高于绿线,是不是就说明我卡了呢?其实这不完全正确,这里就要开始分析组成每一根柱状图不同颜色所代表的含义了。
  每一根柱状图不同颜色所代表的含义(见:一、Android studio自带性能测试工具中 关于GPU Monitor的说明 )

三、第三方性能测试工具

1.Emmagee

1)使用说明

Emmagee是网易QA团队开发的一个简单易Android性能监测小工具,主要用于监控单个App的CPU,内存,流量,启动耗时,电量,电流等性能状态的变化,且用户可自定义配置监控的频率以及性能的实时显示,并生成一份性能统计文件。
Emmagee github开源地址:https://github.com/NetEase/Emmagee
Emmagee 下载地址:https://github.com/NetEase/Emmagee/releases

操作步骤:
1、选择你需要测试的应用,点击“开始测试”,被测应用会被启动
2、开始操作你的应用,测试过程中会自动记录相关性能参数
3、测试完成后,点击“结束测试”,测试结果会保存在手机指定目录的CSV文件中
4、使用Excel打开,文件分析数据。也可以选择一列或多列插入图表生成柱状图,折线图等等。

这里写图片描述

2)数据说明

  • 应用占用内存PSS(MB):应用当前占内存的大小;
  • 应用占用内存比(%):应有占总内存的百分比;
  • 机器剩余内存(MB):机器当前剩余内存;
  • 应用占用CPU率(%):应用占用总CPU的百分比;
  • CPU总使用率(%):CPU的总使用率,包括当前应用,和系统的所有运行的应用;
  • 流量(KB):从检测开始共耗用的流量;
  • 电量(%):剩余电池的百分比,包括其他应用消耗的,这个是有误差的,所以测试期间尽可能关闭其他软件,或者期间别操作其他的应用,避免带来误差;
  • 电流(mA):小于0是放电大于0是充电;
  • 温度(C):手机当前的温度;
  • 帧率:不确定是两次取数之间的平均帧率还是取数据的瞬间帧率。

帧率(Frame rate)是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,简称:FPS),Android系统中是以每秒60帧为满帧。

2.Itest

1)使用说明

Itest是科大讯飞出品的一款小巧的应用测试工具,可以得知应用的资源消耗情况。用于记录应用消耗的cpu、内存、流量、电量;可实时生成走势图,也可保存数据到文本;
文件为txt文件可在SD卡目录找到,直接打开查看。
Itest可在应用市场直接搜索下载。不提供源码,有点遗憾。

这里写图片描述

2)数据说明

同Emmagee数据说明


文章如有错误、遗漏请在评论指出或发邮件给我,我好及时修改,补充,供大家一起学习。

1 0
原创粉丝点击