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中的一个命令行工具,可以运行在模拟器里或者现实设备中,向系统发送 ...
随机推荐
- linux常用命令:mkdir 命令
linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项] 目录... 2.命令 ...
- Linux服务器安装部署redis
参考地址: redis教程:http://www.runoob.com/redis/redis-tutorial.html redis百度百科:https://baike.baidu.com/item ...
- I2S接口介绍
I2S接口介绍一.I2S协议介绍 I2S协议作为音频数据传输协议,由Philips制定.该协议由三条数据线组成:1.SCLK:串行时钟,频率= 2 * 采样频率 * 采样位数.2.WS:字段(声道)选 ...
- ubuntu 常见命令整理
SSH 查看ssh服务的进程是否已经开启ps -e | grep ssh 安装ssh服务组件sudo apt-get install openssh-server 服务启动和关闭 方法1:servic ...
- Google's Machine Learning Crash Course #04# First Steps with TensorFlow
1.使用 TensorFlow 的建议 Which API(s) should you use? You should use the highest level of abstraction tha ...
- ELK学习笔记之F5-HTTP-requesting-logging logstash filter
input { tcp { port => 514 type => 'f5-request' } } filter { if [type] == "f5-request" ...
- Linux下Keepalived安装与配置
一.简介 负载平衡是一种在真实服务器集群中分配IP流量的方法,可提供一个或多个高度可用的虚拟服务.在设计负载均衡拓扑时,重要的是要考虑负载均衡器本身的可用性以及它背后的真实服务器.用C编写的类似于la ...
- ldap集成nexus
nexus版本:2.14.4 添加nexus支持ldap认证: 管理员登录,点击 Administration --> Server -->Security Settings,将 OSS ...
- 快速阅读《QT5.9 c++开发指南》1
简介:<QT5.9 c++开发指南>的作者是和i三位主要从事地球物理探测仪器设计.数据处理方法研究和软件开发等工作的博士们,这本书以QT Widget为主要内容,比较全面地教授了QT开发桌 ...
- 对客户端攻击:adobe_toolbutton
对客户端攻击:adobe_toolbutton 漏洞简介 远程攻击者可以利用漏洞执行任意指令.当用户打开特定pdf就可以触发payload. 实践过程 输入命令use exploit/windows/ ...