Android CPU耗电量测试
Android CPU耗电量测试
在测试Android app时,不仅仅要关注app的功能,也好关注app的性能指标,cpu、内存、流量、电量等。简单介绍下电量测试中的cpu耗电。
影响耗电的因素
- CPU
- Screen
- Network (3G/wifi)
- sensor & gps
- WakeLock
- …
电量测试方法
- 安装电池管理的软件,管家、卫士一类的软件。
- 自己读取Android的内核日志,电量变化广播等。
- 物理设备,安培轮等
这里主要介绍读取内核文件,计算出cpu的电量消耗。
步骤主要如下:
- 抓取指定app占用的cpu时间
- 获取cpu在各个频率下的运行时间
- 根据不同频率下的不同耗电功率,计算出总的耗电消耗。
POWER_PROFILE.XML
每个Android设备都存在这样的一个文件,这个文件定义了各个硬件的功率。不同的手机,内容不同。我的如下(单位mAh,意思是一个小时,能耗电多少mAh):
<?xml version="1.0" encoding="utf-8"?> <device name="Android"> <item name="none">0</item> <item name="screen.on">71</item> <item name="bluetooth.active">17</item> <item name="bluetooth.on">0.3</item> <item name="screen.full">380</item> <item name="wifi.on">0.3</item> <item name="wifi.active">96</item> <item name="wifi.scan">70</item> <item name="dsp.audio">44</item> <item name="dsp.video">280</item> <item name="radio.active">250</item> <item name="radio.scanning">82</item> <item name="gps.on">1</item> <array name="radio.on"> <value>3.4</value> <value>3.4</value> </array> <array name="cpu.speeds"> <value>12000000</value> <value>10000000</value> <value>800000</value> <value>500000</value> <value>200000</value> </array> <item name="cpu.idle">4</item> <array name="cpu.active"> <value>577</value> <value>408</value> <value>249</value> <value>148</value> <value>55</value> </array> <item name="battery.capacity">2100</item> </device>
如何得到power_profile.xml文件
该文件存在手机的/system/framework/framework-res.apk包里,需要使用apk-tool对apk进行反编译,反编译后,在$output/res/xml文件夹中。
获取APP执行时间
- 获取pid,
adb shell ps | grep {appName}或者adb shell top -n 1 | grep ${appName} - 获取pid执行时间,
cat /proc/${pid}/stat, 这个文件中的第14列到17列相加得到的就是从开机到此刻,app一共占用多少cpu时间(设这里值为T1),这里的单位是jiffies, 这个单位的意思是cpu的运算次数,如果cpu的频率为1G,那么1 jiffies = 1/1G 秒。 - 不断去
cat /proc/${pid}/stat,获取cpu占用时间,减去第二步的T1,就是这段时间app的cpu占用时间。 - 获取cpu在不同频率下的工作几率。android的cpu会在不同主频下工作,/sys/devices/system/cpu/cpu0/cpufreq/stats/time_instate
放了cpu在各个频段的占用时间,注意是整个系统占用时间,根据这个几率,计算出cpu的每个频率下的工作时间,然后再乘以power_profile.xml中定义的单位耗电,累加得到cpu消耗。 - http://www.yeetrack.com/?p=1045
Android CPU耗电量测试的更多相关文章
- APP耗电量测试
现象 APP耗电,导致电池续航能力不佳,如下图,在小米MIX2和iPhone X机型上后台静默一小时各应用的耗电排行: 基本概念 相对于PC来说,移动设备的电池电量是非常有限的,保持持久的续航能力尤为 ...
- 深入浅出Android App耗电量统计
前言 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没公开“电量统计”API或文档……额,是的,仅没有公开,并不是没有.平时在手机“设置- 电量”看到的数据 就是系统调用内 ...
- [Android] 深入浅出Android App耗电量统计
reference to : http://www.cnblogs.com/hyddd/p/4402621.html 前言 在Android统计App耗电量比较麻烦,直至Android 4.4,它仍没 ...
- Android流畅度测试
Android流畅度测试 测试方法一:系统自带-开发者模式 测试方法二:FPS Meter测试安卓帧数 H5页面加载速度:window.performance.timing 测试方法一:系统自带-开发 ...
- ffmpeg2.2在ubuntu下使用NDK编译——并在android工程下测试使用
作者:wainiwann 出处:http://www.cnblogs.com/wainiwann/ 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...
- Android Monkey压力测试使用
一.Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送伪随机的用户事件流(点击.滑动.Application切换.横竖屏.应用关闭)实现对 ...
- Android Monkey压力测试环境搭建及使用
Android Monkey压力测试学习笔记 步骤:下载SDK -> 解压进入SDK Manager下载系统 -> 配置环境变量 -> 创建虚拟设备或连接真机 -> 进入命令模 ...
- Android应用耗电量统计,无需USB连接
Android应用耗电量统计一直是一个很头疼的问题,手工统计耗时太长,自动化统计又不是非常精准(执行自动化代码需要通过USB连接,而USB又会充电,这就造成统计数据不准).后来从前辈那里得知可以通过a ...
- 转 Android Monkey压力测试使用
转自:https://www.jianshu.com/p/c8844327f5e9 一.Monkey简介: Monkey是Android中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送 ...
随机推荐
- 5、CentOS 6.5系统安装配置Nginx-1.2.7+PHP-5.3.22环境
一,操作系统 以最小服务器形式安装系统,并添加开发工具库,便于后期编译使用. 此处基本都是下一步,下一步,不再废话. 安装完成,进入系统,调通网络,关闭防火墙或打开相应的WEB端口. 以下安装操作默认 ...
- [转载]oracle的加密和解密
加密函数 create or replace function encrypt_des(p_text varchar2, p_key varchar2) return varchar2 isv_tex ...
- SQL Server双机热备之后项目的FailOver自动连接
SQL Server配置数据库镜像后,可能有朋友们会比较有疑惑,你一下搞两个数据库出来,他们的ip地址都不一样,到时候数据库切换过去了,我的数据库的连接字符串可如何是好?难道还得在代码中去控制是连接哪 ...
- jetbrain_ia
在激活Jetbrains旗下任意产品的时候选择激活服务器填入以下地址便可成功激活 http://idea.liyang.io 最新方法(2018.3.4) http://blog.csdn.net/w ...
- 怎样从外网访问内网Zeus?
本地安装了一个Zeus,只能在局域网内访问,怎样从外网也能访问到本地的Zeus呢?本文将介绍具体的实现步骤. 准备工作 安装并启动Zeus 默认安装的Zeus端口是9090. 实现步骤 下载并解压ho ...
- SpringMVC配置字符编码过滤器CharacterEncodingFilter来解决表单乱码问题
1.GET请求 针对GET请求,可以配置服务器Tomcat的conf\server.xml文件,在其第一个<Connector>标签中,添加URIEncoding="UTF-8& ...
- spring中的springSecurity安全框架的环境搭建
首先在web.xml文件中配置监听器和过滤器 <!--监听器 加载安全框架的核心配置文件到spring容器中--> <context-param> <param-name ...
- Could not complete request
Could not complete request com.alibaba.dubbo.rpc.RpcException: Forbid consumer 10.254.1.26 access se ...
- sqlloader parallel调用报ORA-26002: table has index defined upon it.解决方法
ORA-26002: table has index defined upon it. This issue is caused when using the bulk load option in ...
- RHEL6/7 x86_64下cachefilesd占用cpu达到100%
昨天,有个测试环境cachedfilesd CPU 100%,一直在跑了挺久,经查 1. CacheFiles介绍NFS是一种经常使用到的网络共享文件系统,在分布式环境下,多台服务器的文件共享是一个问 ...