安卓性能测试(四):耗电量(功耗计算) | 您所在的位置:网站首页 › 手机消耗功率计算公式 › 安卓性能测试(四):耗电量(功耗计算) |
这里说的是通过cpu,wifi,屏幕之类的功耗来 计算公式: 功耗的计算=CPU消耗+数据传输消耗+GPS消耗+Wi-Fi连接消耗+Wi-Fi连接消耗+Wake lock消耗+屏幕亮度的功耗
首先说CPU的耗电: 1 获取power_profile.xml文件: 每台android手机都在power_profile.xml中定义了各个硬件的单位时间的耗电量,单位mAh,意思是一个小时,能耗电多少mAh: (1)power_profile.xml 存放在 /system/framework/framework-res.apk 包里; (2)使用apktool将apk反编译,然后在 $output/res/xml 文件夹下找到该文件 power_profile.xml文件如下:
2 获取app的cpu时间(jiffies,1jiffies = 10ms): (1)获取app的pid:adb shell ps | grep packagename (2)获取pid执行时间:adb shell cat /proc/${pid}/stat 这个文件中的第14列到17列相加得到的就是从开机到此刻,app一共占用多少cpu时间,这里的单位是jiffies(记为systime) (3)在测试场景下,两次systime相减得到的时间即为app的进程占用的cpu的时间,注意jiffies转换成s(app_total_time);
3 计算cpu的耗电量: (1)获得测试时间内在各个频率下的占用时间,这个是整个系统占用时间: adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state (2)计算测试时间内每个频率的占用时间: 如:频率a占用了3s,频率b占用了2s, 则频率a的占用时间为 3 / 5 * app_total_time (3)在power_profile.xml中定义该频率下的耗电,将对应时间转换成h,相乘即可得到该频率下的耗电; (4)将各频率下的耗电相加就得到了该进程的耗电;
接下来计算network,screen,sensor的耗电,相加就是app的耗电。
ps:这种方法可以直接插着usb线来计算,(可能有人会说连usb线的话,会不会cpu的频率一直会高速运行就不准了,这里试验过在连接usb和不连usb线进行对比,发现cpu的功耗差别很低,可以忽略,所以插usb线对cpu的耗电测试没有影响)
|
CopyRight 2018-2019 实验室设备网 版权所有 |