[Android Pro] Android应用性能测试之CPU和内存占用(转载)
首先稍做分析一下测试环境:我们知道CPU和内存占用是一个实时变化的状态,而市面上还没有具体的哪款android应用能做到实时监控CPU和内存占用并使用log日志保存。考虑到android的底层框架是基于Linux的平台,所有我们可以通过Linux的资源监控命令来实现对android平台的资源实时监控。
要做到上边的测试环境的实现,需要具备以下几点:
1、被测试的手机具备root权限:因为涉及到底层的linux命令,需要读取或执行相应的文件。至于如何root你的手机,不同型号的手机root的方法不一样,这里就不做介绍了。具体的可以在网上搜索一下自己手机型号的root教程,这里就不做介绍了。
2、需要搭建android的开发环境:因为我们需要监控的是具体的某个应用资源占用的情况,所以需要知道这个应用对应的“安装的包名”是什么,这就需 要使用android开发环境中DDMS模块中的Devices中查看,当启动被测软件时,其主应用程序的安装包名一般就会在列表的最下端出现(如 google地图等除外,开机就启动了)。
通过上边的截图我们可以看到百度地图的主程序包名为:com.baidu.BaiduMap
由于篇幅有限,具体的android开发环境的搭建流程,可以参见网络上的教程,这里就不赘述了。
3、通过Linux命令监控。前边都是一些初始的准备条件,下边其实就是实际的操作流程:
(1)adb shell (进入linux的底层)
(2)echo 3>/proc/sys/vm/drop_caches (清除一下系统cache)
(3)top -d 1 | grep com.baidu.BaiduMap (以百度地图为例,每一秒打印一次资源利用情况)
至于上边每一列代表什么含义呢?由于使用到了复合查询“管道符”的方式,所以必须拥有root权限,否则grep的命令无法识别。
在这里我们看到cmd并没有显示出所对应的列的标题,所以我们可以单独通过top命令来了解到:
至于以上各列的含义我不说我想大家也应该猜得到了,在这里仅说一下我们要用到的两个参数,其他的可以再网上查询了解:
|--CPU%:CPU占用率
|--RSS:实际占用的物理内存数,单位KB
我们可以针对不同的业务,打印出不同的“标签”,用于区别现在从事的那个业务,并为后期分析各业务模块中CPU和内存的占用以及对比使用。
上边就是对具体的某款android应用的评测的数据的获取,我们将日志复制到excel的表格中,并画出相应的数据表。
最后,可以根据得到的图表进行性能分析(多款同类软件进行比较),得出本公司软件的评审标准出来。
[Android Pro] Android应用性能测试之CPU和内存占用(转载)的更多相关文章
- Android应用性能测试之CPU和内存占用
最近发现自己学的很多东西没有做好积淀的工作,也萌生了写一些东西的念头.本人也没有写博客的习惯,下边就写一下手机端的性能测试. 最近公司,要我们从事对竞品的性能测试,我负责CPU和内存的性能测试,下面就 ...
- .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
原文:.NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用? 都知道可以在任务管理器中查看进程的 CPU 和内存占用,那么如何通过 .NET 编写代码的方式来获取到 ...
- Android 性能测试之CPU
接上一篇 CPU跟内存一样,存在一些测试子项,如下清单所示 1.空闲状态下的应用CPU消耗情况 2.中等规格状态下的应用CPU消耗情况 3.满规格状态下的应用CPU消耗情况 4.应用CPU峰值情况 C ...
- [Android Pro] Android性能优化典范第一季
reference to : http://www.cnblogs.com/hanyonglu/p/4244035.html#undefined 2015年伊始,Google发布了关于Android性 ...
- [Android Pro] Android开发实践:自定义ViewGroup的onLayout()分析
reference to : http://www.linuxidc.com/Linux/2014-12/110165.htm 前一篇文章主要讲了自定义View为什么要重载onMeasure()方法( ...
- [Android Pro] Android开发实践:为什么要继承onMeasure()
reference to : http://www.linuxidc.com/Linux/2014-12/110164.htm Android开 发中偶尔会用到自定义View,一般情况下,自定义Vie ...
- [Android Pro] android 4.4 Android原生权限管理:AppOps
reference : http://m.blog.csdn.net/blog/langzxz/45308199 reference : http://blog.csdn.net/hyhyl1990/ ...
- [Android Pro] Android 4.1 使用 Accessibility实现免Root自动批量安装功能
reference to : http://www.infoq.com/cn/articles/android-accessibility-installing?utm_campaign=info ...
- [Android Pro] Android 4.3 NotificationListenerService使用详解
reference to : http://blog.csdn.net/yihongyuelan/article/details/40977323 概况 Android在4.3的版本中(即API 18 ...
随机推荐
- Download failed : Oracle JDK 7 is NOT installed,解决oracle jdk7的问题
先了解下概念: jdk(java development kit),就是java的开发工具集,顾名思义就是做开发用的,其中包括javac,也就是java compiler等.jre(java runt ...
- bzoj 2115 线性基
这种路径异或问题,可以转换为一条路径和若干个环的线性组合,然后就能用线性基搞了. 复习了一波线性基. #include<bits/stdc++.h> #define LL long lon ...
- logstash收集java日志,多行合并成一行
使用codec的multiline插件实现多行匹配,这是一个可以将多行进行合并的插件,而且可以使用what指定将匹配到的行与前面的行合并还是和后面的行合并. 1.java日志收集测试 input { ...
- java 接口请求返回通用json
public class BaseResponseBody { // 不能添加属性 仅做泛型使用 } public class ResponseBase<T extends BaseRespon ...
- mysql-8.0.12安装和配置
1.下载Mysql8.0.12压缩包.下载地址:https://dev.mysql.com/downloads/file/?id=480557 2.解压文件到本地指定目录.这里我的mysql根目录是: ...
- 高并发编程之ReentrantLock
上文学习jvm提供的同步方法synchronized的用法,一些常见的业务类型以及一道以前阿里的面试题,从中学习到了一些并发编程的一些规则以及建议,本文主要学习jdk提供的同步方法reentrantL ...
- POJ 3228 [并查集]
题目链接:[http://poj.org/problem?id=3228] 题意:给出n个村庄,每个村庄有金矿和仓库,然后给出m条边连接着这个村子.问题是把所有的金矿都移动到仓库里所要经过的路径的最大 ...
- 【BZOJ 2510】 2510: 弱题 (矩阵乘法、循环矩阵的矩阵乘法)
2510: 弱题 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 374 Solved: 196 Description 有M个球,一开始每个球均有一 ...
- 【BZOJ 3747】 3747: [POI2015]Kinoman (线段树)
3747: [POI2015]Kinoman Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 830 Solved: 338 Description ...
- NOIP2017 D2T1奶酪
这题终于是正经第一题感觉了. 只需要对相交或相切的球建一条边,然后对所有与底面有交点的球连边,再对所有与顶面有交点的球连边,bfs判断上下连通性即可. #include<iostream> ...