Android性能检测工具――traceview(精选8篇)
一、标注测试的代码区域
如果我们想要测试gridView设置适配器这段代码,该怎么做呢?很简单,用两行代码夹住它~
原始的代码:
mPhotoWall.setAdapter(mAdapter);
标注为测试的代码:
Debug.startMethodTracing(“my_trace_file”);
mPhotoWall.setAdapter(mAdapter);
Debug.stopMethodTracing;
这样我们就表明了,我们的测试是从setAdapter前开始,到它之后结束的,这里有个文件名,my_trace_file,这是我们测试后,得到测试报告的名字,一会再说。
PS:记得要加上权限:
二、查看测试报告
运行程序后,我们会在sdcard文件夹下找到我们的测试报告文件
如果我们想要查看的话,可以通过命令行,把它移动到d盘
adb pull /sdcard/my_trace_file.trace d:/
接着调用
adb pull /sdcard/my_trace_file.trace d:/
即可打开测试报告的图形界面:
三、表头中各个参数的意义
nl Cpu Time%:方法在运行期间被调用的时间占总时间的百分比,
Incl Cpu Time:方法执行的总时间(包括调用子函数所消耗的时间):调用该方法每次所需要消耗的时间*执行次数。
Excl Cpu Time%:方法自身所消耗的时间(不包括调用其他方法所消耗的时间)占总时间的百分比。
Excl Cpu Time:方法自身所消耗的时间。
Incl Real Time%:方法真正执行的时间占总时间的百分比。
Incl Real Time:方法真正被执行的时间。
Excl Real Time%:方法真正被执行的时间占总时间的百分比
Excl Real Time:方法真正被执行的所消耗的时间
Calls RecurCalls/Total:方法被调用的次数 重复调用的次数
Cpu Time/Call:方法每次被执行的时间
Real Time/Call:方法真实被执行的时间
PS:一般在activity的onCreate()中添加Debug.startMethodTracing(“Test”), 在onStop()中来调用Debug.stopMethodTracing()。这样当我们切换到其它activity或者点击home键的时候onStop()就会被调用,我们也就可以得到完整的trace file。
篇2:android性能测试systrace
一:简介
systrace 是 Android4.1 引入的一套用于做性能分析的工具,
基于 Linux 内核的 ftrace 机制(用于跟踪 Linux 内核的函数调用),
可以输出各个线程当前的函数调用状态。
它可帮助开发者收集 Android 关键子系统(如 surfaceflinger、
WindowManagerService 等 Framework 部分关键模块、服务)
的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能
二:内核配置
Kernel hacking---->Tracers
<?.2cto.com/kf/ware/vc/“ target=”_blank“ class=”keylink“>vcD4KPHA PHN0cm9uZz7I/aO6IGluaXQucmMgxeTWwzwvc3Ryb25nPjxicj4KzO280yBtb3VudCBkZWJ1Z2ZzIG5vbmUgL3N5cy9rZXJuZWwvZGVidWcvPC9wPgo8cD48YnI CjwvcD4KPHA PC9wPgo8c3Ryb25nPsvEo7rKudPDPC9zdHJvbmc Cru3vrOjumFuZHJvaWQgNC4zPGJyPgphZGIgway908nosbijqM34wucvVVNCo6kKPGJyPgrA/aO6PGJyPgpjZCBleHRlcm5hbC9jaHJvbWl1bS10cmFjZSAvL7TLtKbTw7XEysdhbmRyb2lk1LTC69bQtcRzeXN0cmFjZaOs0rK/ydLU08NTREvW0LXECjxicj4KcHl0aG9uIHN5c3RyYWNlLnB5IC1iIDMyNzY4IC10IDE1IGdmeCBpbnB1dCB2aWV3IHdlYnZpZXcgd20gYW0gXAphdWRpbyB2aWRlbyBjYW1lcmEgaGFsIHJlcyBkYWx2aWsgc2NoZWQgZnJlcSBpZGxlPGJyPgo8YnI Ci1iIDo8YnI Cta4tqggdHJhY2UgtcQgYnVmILOktsgKPGJyPgotdDo8YnI Cta4tqi8x8K8tcTKsbzko6y1pc67w sKPGJyPgpnZnggaW5wdXQgdmlldyB3ZWJ2aWV3ILXIOjxicj4K1ri2qNKqvMfCvLXExNrI3brNIGZyYW1ld29ya3MvbmF0aXZlL2NtZHMvYXRyYWNlL2F0cmFjZS5jcHDA78PmtcQga19jYXRlZ29yaWVzIMr91 mxo7PW0rvWwgo8YnI Cgo8YnI CjxzdHJvbmc zuWjur3hufs8L3N0cm9uZz4KveG5 8rks/a1vSBleHRlcm5hbC9jaHJvbWl1bS10cmFjZS90cmFjZS5odG1sPGJyPgrKudPDuci46OSvwMDG97Tyv6o8YnI CjxpbWcgc3JjPQ==”.2cto.com/uploadfile/Collfiles/1121/202311210858494.jpg“ alt=”\“>
附:参数说明
篇3:Android编码规范及性能优化
最近看到新人的android代码实在问题太多,一些基本的地方都有问题,于是重新培训了下代码规范,希望后面能慢慢好起来,
一、Android编码规范
1.java代码中不出现中文,最多解释中可以出现中文
2.局部变量命名、静态成员变量命名只能包含字母,单词首字母出4:电脑显卡怎么测试?显卡性能检测工具电脑新手办公/数码
显卡性能检测工具我们使用最多的就是鲁大师了,如果你想测试一下你电脑各项性能都可以使用鲁大师来测试哦,下面简单的分享一下利用鲁大师测试显卡性能吧,有兴趣的朋友可进入参考,
1.安装好鲁大师软件之后我们打开它,然后在界面点击“性能测试”进入, 2.随后会对电脑的处理器、显卡、内存和硬盘性能进行测试,点击“立即测试”按钮,如图所示 3.之后我们会看到一些相关提示了,我们只要点击“开始进行测试”就可以了哦。 4.这样鲁大师会对我们电脑中显卡进行各项测试了,在此测试过程我们不能关闭它哦。 5.在鲁大师测试过程我们可以去玩别的,不过最好不使用电脑哦,测试完之后鲁大师会提示我们的相关性能了哦。篇5:Android性能优化系列――Understanding Overdraw
过度绘制(Overdraw)是指在一帧的时间内像素被绘制了多次;
理论上一个像素每次只绘制一次是最优的,但是由于层叠的布局导致一些像素会被多次绘制,而每次绘制都会对应到CPU的一组绘图命令和GPU的一些操作,所以对重叠不可见元素的重复绘制会产生额外的计算,需要尽量减少Overdraw的发生,
Android系统提供了测量Overdraw的选项,在开发者选项-调试GPU过度绘制(Show GPU Overdraw),打开选项就可以看到当前页面Overdraw的状态。
根据overdraw的次数会显示不同的颜色来区分
transparent = no overdraw blue = 1 layer green = 2 layers light-red = 3 layers dark red = you’re doing it wrong优化方法
总的原则就是:尽量避免重叠不可见元素的绘制
去除不需要的背景资源
在theme中添加android:windowbackground=”null“
; 在Activity中设置getWindow.setBackgroundDrawable(null)这个方法要在setContentView()之后,因为getWindow().setBackground(Drawable)会讲这里的Drawable设置到DecorView的background,默认是0xff000000,而setContentView才会6:Android:使用SparseArray代替HashMap优化性能
之前看到一篇关于adapter的文章用到了SparseArray,所以在这里写写关于SparseArray的用法,
SparseArray是官方针对安卓所写的容器,与HashMap类似,不过性能比HashMap好。
SparseArray实现了Cloneable接口,还可以调用clone方法。
首先看看SparseArray的用法:
构造:
SparseArray的构造与我们用惯的HashMap,ArrayList一样也是new出一个实例然后使用。
SparseArray
SparseArray
也可以在构造的时候就指定大小:
SparseArray
添加元素:
用惯ArraList和HashMap的我们知道要往容器里面添加元素可以分别调用add和put方法。 SparseArray也一样,可以调用put(int key,E value); 相信有读者一经发现上面构造SparseArray的时候已经发现,构造的时候只指定一个泛型,而不像HashMap那样构造的时候要指定两个泛型类型: new HashMap
SparseArray
public void append(int key, E value)SparseArray储存数据是使用二分法储存,说储存的数据是根据键的大小,从小到大排列。
取值:
既然可以添加那么自然可以取出来:
public E get(int key) ;
根据键取值。 除此之外还有一个方法可以取值:
public E get(int key, E valueIfKeyNotFound) ;
可以看到多了一个参数,从7:由浅入深讲解android开发中listview的性能优化
ListView是一种可以显示一系列项目并能进行滚动显示的View,在每行里,既可以是简单的文本,也可以是复杂的结构。一般情况下,你都需要保证ListView运行得很好(即:渲染更快,滚动流畅)。在接下来的内容里,我将就ListView的使用,向大家提供几种解决不同性能问题的解决方案。
如果你想使用ListView,你就不得不使用ListAdapter来显示内容。SDK中,已经有了几种简单实现的Adapter:
· ArrayAdapter
· SimpleAdapter (显示Maps列表)
· SimpleCursorAdapter(显示通过Cursor从DB中获取的信息)
这些实现对于显示简单的列表来说,非常棒!一旦你的列表比较复杂,你就不得不书写自己的ListAdapter实现。在多数情况下,直接从ArrayAdapter扩展就能很好地处理一组对象。此时,你需要处理的工作只是告诉系统如何处理列表中的对象。通过重写getView(int, View, ViewGroup)方法即可达到。
在这里,举一个你需要自定义ListAdapter的例子:显示一组图片,图片的旁边有文字挨着。
图片需要实时从internet上下载下来。让我们先创建一个Class来代表列表中的项目:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29public class ImageAndText { private String imageUrl; private String text; public ImageAndText(String imageUrl, String text) {this.imageUrl = imageUrl; this.text = text; } public String getImageUrl() { return imageUrl; } public String getText() { returntext; } }现在,我们要实现一个ListAdapter,来显示ImageAndText列表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71public class ImageAndTextListAdapter extends ArrayAdapter这些View都是从“image_and_text_row.xml”XML文件中inflate的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31”1.0“ encoding=”utf-8“?> ”schemas.android.com/apk/res/android“android:orientation=”horizontal“ android:layout_width=”fill_parent“android:layout_height=”wrap_content“>
这个ListAdapter实现正如你所期望的那样,能在ListView中加载ImageAndText,
但是,它唯一可用的场合是那些拥有很少项目、无需滚动即可看到全部的列表。如果ImageAndText列表内容很多的时候,你会看到,滚动起来不是那么的平滑(事实上,远远不是)。
性能改善
上面例子最大的瓶颈是图片需要从internet上下载。因为我们的代码都在UI线程中执行,所以,每当一张图片从网络上下载时,UI就会变得停滞。如果你用3G网络代替WiFi的话,性能情况会变得更糟。
为了避免这种情况,我们想让图片的下载处于单独的线程里,这样就不会过多地占用UI线程。为了达到这一目的,我们可能需要使用为这种情况特意设计的AsyncTask。实际情况中,你将注意到AsyncTask被限制在10个以内。这个数量是在Android SDK中硬编码的,所以我们无法改变。这对我们来说是一个制限事项,因为常常有超过10个图片同时在下载。
AsyncImageLoader
一个变通的做法是手动的为每个图片创建一个线程。另外,我们还应该使用Handler来将下载的图片invoke到UI线程。我们这样做的原因是我们只能在UI线程中修改UI。我创建了一个AsyncImageLoader类,利用线程和Handler来负责图片的下载。此外,它还缓存了图片,防止单个图片被下载多次。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81public class AsyncImageLoader { private HashMap篇8:android ORM框架的性能简单测试(androrm vs ormlite)
看了一下现在的android设备,性能都不差,就懒得直接用sqlite,直接上ORM框架把,上网搜了一圈,觉得androrm, ormlite 这两个不错,当然,还有点别的,这里就不多做介绍,竟然说明了是简单测试,而本人,也不算是专业的测试人员,就测试一下这两个框架在同一设备下,插入1w(本来是想插100w,后来插入10w,接着就只能插1w,呵呵有兴趣的可以去测试一下…)行数据的时间吧,给大家做一个简单参考,真正要做比较的话,其实,测试,表查询才是最重要的,但是,关键我没有这样的数据源,要构建一个挺耗时间的.
测试用设备
设备名原道N10主控方案RK2918CPU1 ghzRAM512 MB系统版本2.3.1象限(quadrant stand)2000分左右影响整个测试的硬件指标估计就这几个了,测试的环境就是上表的数据了
图表
R语言生成的:
最快当然是直接用sqlite…(废话),从表中我们可以比较出,就ORM框架而言androrm有一丁点的速度优势,可能由于ormlite用注解字段的方式,导致ormlite性能有着一定的损失(注解其实也是利用了反射的原理),不过,对于熟悉j2ee的朋友来讲ormlite更容易上手,而对于python程序员学习过django这个框架的朋友更容易上手androrm.从这个简单的实验来看,官方推荐我们少用get/set方法也不是毫无道理的,对于一个类的反射的耗时,以我的那台设备而言开销可能大约在2毫秒左右(这个以第三次androrm 与sqlite的相减再除与10000得出..),注意…这只是简单的测试而已!!!真正要比较性能还要考虑到GC的问题,所以这里这是随便说说而已!
文档活跃度
andrormormlite文档不完善超级齐全社区不活跃,我提交到一个bug,到现在都还没有修复的消息活跃更新频率慢很快!个人建议,想研究怎么写orm框架的可以用androrm,想速度的开发产品,用ormlite,其实,啥都不用最好,呵呵~
有兴趣的朋友可以下载我用来测试的源代码试一下
.kuaipan.cn/file/id_2622545685705265.html