电量优化

电量优化

目录


电量查询 SQL

1. 查看系统的总电量消耗

SELECT 
    datetime(timestamp, 'unixepoch', 'localtime') AS time, 
    timestamp, 
    Level, 
    RawLevel, 
    Voltage, 
    InstantAmperage,
    AppleRawCurrentCapacity
FROM PLBatteryAgent_EventBackward_Battery 
WHERE timestamp > 1604551890;

字段说明:

  • AppleRawCurrentCapacity:电池当前剩余容量
  • InstantAmperage:实时电流

2. 查看 Node ID

Meeting:

SELECT * 
FROM PLAccountingOperator_EventNone_Nodes 
WHERE name = "com.tencent.meeting.db.haven";

结果:10204

Zoom:

SELECT * 
FROM PLAccountingOperator_EventNone_Nodes 
WHERE name = "us.zoom.videomeetings.yunshipin";

3. 按模块汇总

Meeting 应用:

SELECT 
    datetime(timestamp, 'unixepoch', 'localtime') AS time, 
    *,
    (SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.NodeID) AS appname, 
    (SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.RootNodeID) AS typename 
FROM PLAccountingOperator_Aggregate_RootNodeEnergy 
WHERE NodeID = (SELECT ID FROM PLAccountingOperator_EventNone_Nodes WHERE Name = 'com.tencent.meeting.db.haven') 
ORDER BY time;

Zoom 应用(yunshipin):

SELECT 
    datetime(timestamp, 'unixepoch', 'localtime') AS time, 
    *,
    (SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.NodeID) AS appname, 
    (SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.RootNodeID) AS typename 
FROM PLAccountingOperator_Aggregate_RootNodeEnergy 
WHERE NodeID = (SELECT ID FROM PLAccountingOperator_EventNone_Nodes WHERE Name = 'us.zoom.videomeetings.yunshipin') 
ORDER BY time;

Zoom 应用:

SELECT 
    datetime(timestamp, 'unixepoch', 'localtime') AS time, 
    *,
    (SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.NodeID) AS appname, 
    (SELECT Name FROM PLAccountingOperator_EventNone_Nodes WHERE ID = PLAccountingOperator_Aggregate_RootNodeEnergy.RootNodeID) AS typename 
FROM PLAccountingOperator_Aggregate_RootNodeEnergy 
WHERE NodeID = (SELECT ID FROM PLAccountingOperator_EventNone_Nodes WHERE Name = 'us.zoom.videomeetings') 
ORDER BY time;

按时间戳和 RootNodeID 查询:

SELECT
    datetime(t1.timestamp, 'unixepoch', 'localtime') AS time,
    *
FROM 
(
    SELECT * 
    FROM PLAccountingOperator_Aggregate_RootNodeEnergy
    WHERE timestamp = 1604484033 AND RootNodeID = 11
) AS t1 
INNER JOIN PLAccountingOperator_EventNone_Nodes AS t2
ON t1.NodeId = t2.ID;

注意事项

  • 数据输出延迟:延迟一个小时,只能按小时统计
  • 应用标识
  • Meeting: com.tencent.meeting.db.haven
  • Zoom: us.zoom.videomeetings.yunshipin

测试方法

原始方法

步骤:

  1. 保持实验前置条件一致(手机当前电量)
  2. 测试半个小时
  3. 记录实验后的手机当前电量

优点: 简单

缺点: 需要人工参与,精准性不高,无法按模块区分耗电量

Instruments Energy Log

优点: 可以看出各个模块的能耗消耗等级和时长

缺点: 模块耗电量未知

系统诊断 – 苹果电池诊断

日志开启

  1. 下载 profile(有效期 7 天),并安装到 iOS 设备,使用 AirDrop 传递到电脑
  2. 同步日志信息到电脑(同步之前不要重启设备)
  3. 复现问题,并记录问题出现的日期和时间
  4. 再次同步信息到电脑
  5. macOS 日志位置~/Library/Logs/CrashReporter/MobileDevice/[Your_Device_Name]/(同步手机信息到电脑)
  6. iOSSettings.app > Privacy > Analytics > Analytics Data >(定位 sysdiagnose 文件并通过 AirDrop 发送到 Mac)
  7. Windows 10C:\Users\USERID\AppData\Local\Packages\AppleInc.iTunes_devicename\LocalCache\Roaming\AppleComputer\Logs\CrashReporter\MobileDevice\[Your_Device_Name]/DiagnosticLogs/

日志关闭

  1. 移除 profile
  2. 重启设备

电量计算

  • 额定容量 × 额定电压 = 额定电量
  • 单位运算mAH × V = mWH
  • Energy:mWH,不需要充电,可以连续测试
  • iPhone 6s 电池容量:1715 mAh

优化方向

  1. 网络:优化网络请求频率和策略
  2. 定位:减少定位服务的使用频率
  3. 其他:(待补充)

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Index