Android应用性能测试之CPU和内存占用

最近发现自己学的很多东西没有做好积淀的工作,也萌生了写一些东西的念头。本人也没有写博客的习惯,下边就写一下手机端的性能测试

  最近公司,要我们从事对竞品的性能测试,我负责CPU和内存的性能测试,下面就和大家来分享一下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的表格中,并画出相应的数据表。

  最后,可以根据得到的图表进行性能分析(多款同类软件进行比较),得出本公司软件的评审标准出来。

  大家有什么看法意见,请及时拍砖~

时间: 2024-08-26 02:55:20

Android应用性能测试之CPU和内存占用的相关文章

[Android Pro] Android应用性能测试之CPU和内存占用(转载)

首先稍做分析一下测试环境:我们知道CPU和内存占用是一个实时变化的状态,而市面上还没有具体的哪款android应用能做到实时监控CPU和内存占用并使用log日志保存.考虑到android的底层框架是基于Linux的平台,所有我们可以通过Linux的资源监控命令来实现对android平台的资源实时监控. 要做到上边的测试环境的实现,需要具备以下几点: 1.被测试的手机具备root权限:因为涉及到底层的linux命令,需要读取或执行相应的文件.至于如何root你的手机,不同型号的手机root的方法不

.NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?

原文:.NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用? 都知道可以在任务管理器中查看进程的 CPU 和内存占用,那么如何通过 .NET 编写代码的方式来获取到 CPU 和内存占用呢? .NET 中提供了 PerformanceCounter 类型,可以用来监视系统中大量的性能问题. 本文内容 获取全局 CPU 和内存占用 获取当前进程的 CPU 和内存占用 获取全局 CPU 和内存占用 要获取到全系统中的 CPU 占用率,获取全系统中内存占用,需要首先分

查看当前cpu和内存占用最多的的程序

1.CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -102.内存消耗最多的前10个进程 ps auxw|head -1;ps auxw|sort -rn -k4|head -10 根据第一行的数值进行倒序查询USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 查看过去时间cpu和内存占用情况sar -rsar -r 1 4sar命令使用格式:sar + 命令行选项(可选

Android使用procrank和dumpsysmeminfo分析内存占用情况

如果你想查看所有进程的内存使用情况,可以使用命令procrank.dumpsys meminfo查看,当然也只可以过滤出某个进程如:dumpsys meminfo | grep -i phone 先来看下procrank view sourceprint? 01. sh-4.2# procrank 02. PID Vss Rss Pss Uss cmdline 03. 1078 59840K 59708K 42125K 39344K com.csr.BTApp 04. 2683 59124K 5

Linux 带宽、CPU、内存占用情况

iftop 查看带宽占用情况(总)yum install -y iftop 安装iftopnethogs 查看进程流量 curl http://218.5.73.233:8060/ip.php 查看出口ip 查看当前线程:ps -ef|grep javaps -ef|gerp com.meiya.main(包名) 1.CPU使用率情况命令:top 备注:用户占用CPU1.5%,系统占用CPU1.5%,空闲95.3%,其他占用1.7%:2.内存使用率情况命令:free -g 备注:内存总大小15G

Shell脚本 | 性能测试之CPU占有率

Android 是一个基于 Linux 内核的移动操作系统,Linux 的 CPU 占有率的计算方式也可以应用到 Android App 上. 今天分享的这个脚本的功能,是在多核情况下计算进程的 CPU 占有率.详细的算法,有一篇别人写的关于 Linux 环境下计算进程和线程的 CPU 占有率的文章,推荐一读,链接附在文末. 这里就简单说下计算步骤吧: 1.获取测试设备的 CPU 核心数 2.计算进程的 CPU 使用时间 3.计算总的 CPU 使用时间 4.进程的 CPU 使用率 = (进程的

使用adb查看CPU和内存

adb shell ->cat/sys/class/net/wlan0/address 获取Mac地址 abd shell –>cat /proc/cpuinfo 获取CPU信息 adb shell ->cat /proc/meminfo 查看当前内存占用 adb shell -> cat /proc/iomem 查看IO内存分区adb shell top 查看设备CPU和内存占用情况 adb shell top –m 3 查看占用内存前3的APP adb shell top –n

「android」查看应用占用cpu和内存消耗情况

查看CPU 消耗 1.进入adb shell 2.输入top -m 10 -s cpu 可查看占用cpu最高的前10个程序(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量) 查看内存消耗 1.进入adb shell ; 2.输入dumpsys meminfo

Android app性能优化大汇总之内存性能优化

写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在Android开发中遇到关于内存问题,或者马上要参加面试,或者就是单纯的学习或复习一下内存相关知识,都欢迎阅读.(本文最后我会尽量列出所参考的文章). 内存简介: RAM(random access memory)随机存取存储器.说白了就是内存. 一般Java在内存分配时会涉及到以下区域: 寄存器(R