android 性能测试 简介,android性能测试工具traceview简介[转载]

一、

TraceView工具简述

Traceview是android平台配备的一个很好的性能分析工具。它可以通过图形界面的方式让我们了解我们要跟踪的程序的性能,并且能具体到method。

二、

TraceView工具使用方法

TraceView有三种启动方式,下面逐一介绍:

1、 代码中启动

可以在代码中添加

Debug.startMethodTracing(“Tracelog”);

Debug.stopMethodTracing();

使用这种方式需要确保应用的AndroidMainfest.xml中的SD卡的读写权限是打开的,即

应用运行完后,会在SD卡下生成一个Tracelog文件,使用adb

pull把这个文件拷贝至XP系统上,再在android sdk的tools目录下执行traceview

Tracelog,则会弹出一个图形界面,通过这个图形界面就可以分析出应用的性能瓶颈;

2、 Eclipse中启动

Eclipse启动traceview及其简单,在DDMS中对需要分析的应用进程点击如下按钮

a4c26d1e5885305701be709a3d33442f.png

在需要停止traceview的地方点击相同的按钮,则Eclipse会自动弹出类似1中的一个图形界面;

3、 adb 命令行启动

adb  shell  am

profile  start

adb  shell  am

profile  stop

PROCESS_ID为应用的进程号,可以用ps命令获取,TRACE_FILE为需要存储的Trcaelog文件。

执行上面的命令后,会生成对应的TRACE_FILE,使用adb

pull把这个文件拷贝至XP系统上,再在android sdk的tools目录下执行traceview

Tracelog,则会弹出一个图形界面,通过这个图形界面就可以分析出应用的性能瓶颈;

三、

TraceView界面说明

上述步骤生成的图形界面如下所示:

a4c26d1e5885305701be709a3d33442f.png

1、时间轴面板:

每个线程的执行都显示在随着时间渐增右移的各自行上。不同的方法用不同的颜色来表示。下面的细线显示选中方法的调用时长(由进入到退出)。

2、Profile面板:

该表给出了the inclusive and exclusive

times及他们所占有的百分比。

Exclusive time是该函数本身基本操作(不包括子函数调用)的时间。

Inclusive time是该函数调用所用的时间(包括子函数调用)的时间。

列1:”Name”表示函数名。

双击函数名,可以看到在上半界面是时间轴面图(Timeline

Panel)看他的所消耗的时间段。(用粗的线段标注)。

双击函数名左边的”+”展开后可以看到,该函数的”parents”和”children”

列2:”incl%”表示函数的Inclusive

time在整个MethodTracing时间里占的百分比。

列3:”Inclusive”表示Inclusive time。

列4:”Excl%”表示函数的Exclusive

time在整个MethodTracing时间里占的百分

比。

列5:”Exclusive”表示Exclusive time。

列6:”Calls+RecurCalls/Total”表示对函数的调用次数(包括递归调用)。

列7: 新的版本(比如2.2)还有”time/calls”表示平均的调用时间(即Inclusive

time/

total calls)。

注:如果函数A调用函数B那么函数A称为函数B的”parents”,函数B称为函数A的”children.”

四、

TraceView工具实例使用说明

本例以安居客选择一个城市中的一套房源进行收藏的过程为例,详细讲述如何使用TraceView工具。

操作步骤如下:

1、 启动Eclipse,并连接上模拟器;

2、 在模拟器上启动安居客应用,并打开DDMS,选中安居客进程;

3、 点击Start profile method按钮;

4、 在安居客中打开一套房源,等待房源成功打开后查看大图并进行收藏;

5、 点击DDMS中的stop profile method按钮,将会在 Eclipse中自动弹出一个图形界面。

按照平均调用时间(time/calls)从大到小来进行排序,见下图:

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

从上图可知,DetailActivityForPicture.onCreat()函数的平均调用时间为4.034秒,共调用了1次,调用时间相对较久,再看它调用的子函数。其中,子函数DetailActivityForPicture.initInfo()的调用时间为0.9s。相对时间较长,若需要优化性能,需要对initInfo()执行时间进行优化。

下面再来看DetailActivityForPicture.initInfo()函数的子函数的情况,如图:

a4c26d1e5885305701be709a3d33442f.png

进一步可分析出来initFavoriteButton()调用时间最长为0.4s。依次查询下去,见下图:

a4c26d1e5885305701be709a3d33442f.png

DialogBoxUtil.getFavoriteWindow()和FavoritePropertyModel.函数可以进行优化。如上性能分析结果,可供开发人员参考,并有针对地进行性能优化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值