背景交代
最近有一款游戏要上线,性能检测虽然在安卓上已经检测通过,但 ios 上还是第一次检测,尤其是近年来移动端用户越来越重视手机的续航能力,所以我们对游戏的电量消耗等指标的关注程度也越来越重视;
然而 ios 性能检测的相关文档相对安卓来说还是少很多,以前我们常用的就是 Instruments,最近 perfdog 也出了 iOS 电量测试功能,特来对比一下。

这里首先给出 ios 手机 wifi 连接 Imac 的方法
1.打开 Xcode,选择菜单栏中 Window ——>Devices and Simulators 弹出相应的对话框
2.将 Connect via network 复选框选中
3.将数据线从苹果电脑上拔掉,此时真机回显示为 DisConnected,点击手机 弹出一个快捷菜单
4.选中其中的 Connect Via IP Address 命令,弹出对话框,输入手机的 IP 地址然后单击 Connect 按钮 此时真机就通过无线就连接到苹果电脑了,

1.Instruments 获取 ios 能耗

首先我们要打开 ios 的开发者选项,简单来说你需要登录 Xcode,把 IOS 手机连接电脑,这样就可以打开开发者,接下来:
1.iOS 设置选项 ->开发者选项->logging ->start recording
在这里插入图片描述
2.打开需要测试电量的游戏场景操作后开始跑游戏
3.进入开发者选项点击 stop recording
4.将 iOS 设备和 Mac 连接
5.打开 Instrument,选择 Energy Diagnostics
6.选择 File > Import Logged Data from Device

此时可能会有一些卡顿,稍等后会出现结果
在这里插入图片描述
要注意的是:
测试过程中要断开 iOS 设备和电脑、电源的连接
电量使用 level 为 0-20,1/20:表示运行该 app,电池生命会有 20 个小时;20/20:表示运行该 app,电池电量仅有 1 小时的生命,这里表示电量消耗有点大啊,我测试的时候手机有 75% 的电量,玩游戏也就是说大概 20/17=1.17 小时就会没电了;
下面还有屏幕亮度,CPU,网络使用,GPS,蓝牙等等电量消耗
不过此处的数据无法保存,而且由于无法标注场景,所以在测试时要尽量保证场景单一;
为了分析详细数据,找到问题,笔者开始采用其他常见方法测试游戏电量;

2.Perfdog 获取 ios 能耗

1.打开 perfdog,选择要连接的 IOS 手机,注意选择 wifi 模式。
2.选择要捕获的数据,wifi 模式不能截图比较可惜
3.选择要测试的应用就可以了;

这里介绍一些常用的技巧,由于不能截图,我们最好对场景做一些批注,

1)批注及标定 (鼠标左键双击,则批注。左键双击已生成的批注,则取消。鼠标左键单击,则标定)
2)可以通过鼠标框选/拖动查询时间周期内,统计数据等。同时可对框选数据进行保存。右边可以设定对应的性能参数统计分析阈值等。
3)通过标签按钮给性能数据打标签,鼠标左键双击颜色区域可修改对应区域标签名
具体技巧可以参考:Perfdog 使用说明
在这里插入图片描述
当我们测试完毕上传后台的时候记得勾选 Save 就可以在本地保存所捕获的所有数据,点击文件夹既就可以看到,数据就保存在包名所命名的文件夹里.
在这里插入图片描述
这是平台的电量数据信息,
整机实时 Current 电流:单位毫安 (mA)、Voltage 电压:单位毫瓦 (mW)、Power 功耗:单位毫伏 (mV)
在这里插入图片描述
这里可以多场景组合分析,可以看到在资源下载的时候功耗明显上升,在资源结束的时候仍在上升,这里怀疑在解压资源,通过 cpu 也可以完全证实这一点;而在游戏开始,副本战斗的时候功耗开始下降。如果想要优化,可以从资源处理的方面入手。
在这里插入图片描述

3.sysdiagnose 获取 ios 能耗

1.官网下载证书 Profiles and Logs。(需要开发者证书)
2.下载完成后通过 AirDrop 发到测试手机上安装。
3.在不重启手机的情况下,等待 10 到 30 分钟。
4.手机连上电脑,通过 iTunes 同步到电脑上。
5.去 ~/Library/Logs/CrashReporter/MobileDevice 目录下,打开 powerlog_xxxx.PLSQL 文件。

在这里插入图片描述
简单介绍下表名的意思
PLBatteryAgent_EventBackward_Battery: 整台机器的电量数据,包含电流、电压、温度等,每 20 秒 左右一条数据
PLBatteryAgent_EventBackward_BatteryUI: 电量百分比数据,每 20 秒一条数据
PLIOReportAgent_EventBackward_EneryModel: 整机的详细电量数据。包含 CPUGPUDRAMISP 等关键信息。每半小时到一小时一条数据。
6.接来下需要 知道你要测试的 App 的 Bundle Identifier ,可以通过 pp 助手或者其他应用获取,有很多方法;
7.得到每个 App 的唯一标识后,我们就可以去 PLAccountingOperator_Aggregate_RootNodeEnergy biao 表里看电量消耗数据了,这里的单位在 iOS 9 是 mAh ,iOS 9 及以上应该是 1/1000 mAh,也就可以执行 SQL 语句计算出来,不过一番操作下来比较复杂,费时费力;

在这里插入图片描述
在这里插入图片描述

4.Energy Impact 获取 ios 能耗

在开发过程中,运行调试模式就可以在 Xcode 里直接查看 Energy Impact。有 3 个区域,红色代表有严重问题。下面的柱状图会告诉你耗电的组成部分:CPU,Network,Location,GPU。其中 Overhead 表示不是由你的 App 引起的耗电。
如果有问题,可以进一步通过快捷入口打开 Time Profile,Network Profile,Location Profile 做进一步细致排查问题点。
这个没什么复杂的,自己研究下就可以。缺点只适合开发人员;而且对于耗电只能给出定性,没有定量的显示。
在这里插入图片描述

名字 上手难度 优点 可优化功能 推荐指数
Perfdog 简单 测试报告数据清晰,可以查看当时的 cpu 等其他维度数据,可添加批注,所以可以多个场景同时测试,数据可以保存到本地,电量指标较为详细 wifi 连接无法截图比较可惜,人工添加批注有时容易不及时 ✰✰✰✰✰
Instruments 简单 数据清晰,操作简单,可以查看当时的 cpu 等其他维度数据 无测试报告,无法添加批注,为保证数据准确性尽量保证单一场景,详细数据无法保存 ✰✰✰✰
sysdiagnose 复杂 捕获的数据丰富 需要开发者证书,操作较为复杂,无测试趋势图,仅有数值 ✰✰✰
Energy Impact 简单 上手简单,开发时运行调试模式就可以 需要有项目源码权限,而且对于耗电只能给出定性,没有定量的显示 ✰✰✰

综合以上数据来看,还是推荐使用 Perfdog 进行测试,无论是从用户的交互方式还是从数据指标的丰富程度,Perfdog 都达到了较高的水准,至于参考标准可以从精品产品获取数据作为对比参考;


↙↙↙阅读原文可查看相关链接,并与作者交流