前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你手机的电都去哪儿了?

你手机的电都去哪儿了?

作者头像
WeTest质量开放平台团队
修改2018-10-29 17:53:11
1.9K0
修改2018-10-29 17:53:11
举报
文章被收录于专栏:WeTest质量开放平台团队的专栏

与传统的APP相比,手游的耗电量那可不是盖的,手机还有10%的电,玩局游戏吧,正玩着HIGH呢,马上就要破记录了,无情的手机提示电量耗尽30秒后强制关机,欲哭无泪~,这电到底去哪儿了呢?

工具准备

要想省电先得搞明白电耗哪儿了?准备一个靠谱点的定量分析工具是必不可少的,下面是本人焊的一个吊丝版电量测试工具:

手机电源是一个大容量的充电宝,电压相对恒定的情况下,手机的耗电量是与流过手机的电流成正比的,但单独看手机的电流值是没有意义的,还需与相关的参照物对比才有意义。

耗电因素分析

工具准备好了,那么手游的耗电因素都有哪些呢?CPU、Screen、GPU、Network、LBS、Audio、File/Memory,这些因素是与手游关系比较密切的(好像全了)。下面采用隔离法来逐个分析上面的因素对耗电量的贡献到底有多大?下面所有实验是基于小米2S,测试时关闭无关的功能,删除无关应用,重要配置如下:

由不同手机的硬件不同,不同硬件的功耗也不一样,所以下面基于小米2S的实验只是一些参考,并不能代表所有手机。

CPU

在手机上玩游戏的过程中,CPU通常是比较忙的,在被测机上安装几个游戏,用TOP命令在玩游戏过程中粗略观察一下他们的CPU使用率:

游戏

游戏过程中CPU占用率

雷霆战机

17%

天天酷跑

11%

天天飞车

14%

全民飞机大战

11%

我叫MT Online

12%

可见这几个游戏的CPU平均使用率大约分布在11%~17%上下(小米2S是4核手机,25%为其中一核满负载)。下面写一个普通的APP执行斐波那契数学计算,并控制CPU占用率在特定值,比较一下电量的消耗情况,统计结果如下:

依据上面的结果,可以看到CPU占用率较在非全速运行下,耗电量贡献并不是很高,大约20-40mA。但是当CPU占用率达到较高的状态后,CPU的功耗骤然升高,这是因为现代CPU使用动态调整频率和电压来节省电力和减少发热,称为DVFS技术(动态电压和频率调整),所以应控制CPU的使用,尽量让CPU处于非全速状态。

Screen

目前主要有两种屏幕,IPS屏和三星主推的AMOLED屏,屏幕的亮度对整机耗电影响较大,这个众所周知的,现在很多手机的屏幕亮度是通过光传感器自动调节的,但对手游来说屏幕亮度是其无法控制的,所以这里不作讨论。但是手游的色彩明暗是游戏可控制的,有些游戏色彩偏暗,有些游戏色彩偏明亮,那么游戏的色彩对耗电有没有影响呢?

我制作了5张纯色图片,分别是:黑、红、绿、蓝、白,然后从全民飞机大战和雷霆战机上分别截取了排行榜的屏幕截图:

然后,分别在三星S3(AMOLED屏)和小米2S(IPS)上显示,做屏幕耗电实验,结果如下:

AMOED屏幕的耗电量是与显示色彩是有关系的,而且在两个极端的情况下差距还不小,纯黑和纯白相差了150mA,但是实际游戏中不可能有这种极端情况,全民飞机大战的色彩偏亮,而雷霆战机色彩偏暗,显示两个截图屏幕耗电量相差大约25mA,因为三星手机用户量还是比较多,AMOLED是三星主推的屏幕材质,所以色彩也是耗电要需要考虑的一个因素。

GPU

这里所说的GPU泛指手机上的显卡,玩PC游戏的同学都知道显卡对游戏的重要性,PC机上一个好的显卡往往要配一个大功率的电源,好的显卡还要配2-3个风扇散热。

那么在手机上玩游戏时GPU对耗电量的贡献多少呢?带着这个问题,使用cocos2dx引擎做几组实验,实验前测得不启动游戏,保持屏幕正常点亮,手机的耗电量为180mA,下面开始实验。

实验一

结论:相同条件下,在屏幕上渲染的面积越大,所消耗的电量越高,结合本次试验看,渲染的面积对耗电量贡献很大。

实验二

结论:在其他条件不变的前提下,降低FPS,可以有效的降低耗电量。

实验三

结论:渲染内容不变的前提下,合并渲染,减少渲染批次可以减轻CPU和GPU的负担,降低耗电量。

未启动游戏,手机背景耗电180mA,该游戏Demo,不包含网络等其他额外功能,从各个测试项可见GPU的耗电量相比其他因素还是“恐怖”的。

实例

分别收集两款比较火的手游雷霆战机和全民飞机大战的耗电数据,雷霆战机玩无尽模式,全民大飞机玩,那就打飞机吧,数据如下:

总的来说,雷霆战机耗电量要比全民飞机大战要高,耗电量波形图:

雷霆战机耗电波动较大,多数时候耗电量都在600-700mA,低的时候在400mA上下,高峰时候甚至接近800mA;而全民飞机大战耗电相对平稳,集中在500mA~600mA。

雷霆战机的CPU比全民飞机大战的CPU要高,这是耗电原因的一部分,另外,看一下GPU渲染情况:

全民飞机大战中使用了较多的合并渲染,相比雷霆战机渲染批次减少不少,降低了GPU的负担,也起到了节省功耗的作用,可能也还有其他因素,目前还没有研究到。

Network:

下面分别用WIFI和3G持续收发一定量的数据,观察耗电变化。

可见,WIFI下面收发数据的耗电量要远小于3G模式下,不过本实验中的数据收发比较大,而且比较密集,实际游戏中应该不会出现长时间如此密集的收发数据,但是3G模式下来还是应该控制数据传输的量和次数。

Audio:

音频也是游戏的一个重要部分,游戏中除了背景声还有各种音效,下面就针这种情况分析来测试一下音频对游戏的影响:

上面的声音是直接用手机的扬声器播放的,音量调整到75%,可见声音对耗电量的贡献大约在40mA左右。

File/Memory:

下面是模拟手游的内存读写和文件读写操作,游戏中内存操作是比较频繁的,但是文件读写相比内存是要少的,特别是写文件,下面分别设计了两个模拟场景,并记录耗电情况。

从这个模拟结果看,内存读写对耗电的影响很小,文件读写对耗电的贡献也很有限。

LBS:

虽然不少游戏中有LBS功能,一般用于查找附近的玩家,实际玩游戏过程中使用的并不频繁,甚至是比较少的,所以LBS这一块对手游的整体耗电影响很有限。

耗电因素影响度:

因素

影响度

说明

GPU

GPU是耗电主要原因,而且是手游可以优化的。

CPU

观察CPU是否在正常范围,如果游戏使用CPU经常处于全速运行模式,也是非常耗电的。

Network

3G模式下,持续发送数据耗电还是挺高的,所以要注意观察游戏的流量大小和发包频率。

Audio

注意观察打开和关闭背景音乐及音效的耗电差。

Screen

屏幕虽然是手机耗电主要原因,但对游戏来说无法控制,在测试过程注意将亮度设为固定即可,AMOLD屏可以关注游戏色彩明暗。

File/Memory

目前来看对耗电影响不大。

LBS

游戏中虽然有LBS,但是使用的频度较低。

手游如何省电:

套用前段时间比较火的一个句式:用电容易,充电不易,且用且珍惜,上面各个因素都对耗电有或多或少的影响,那么如何做才可以让手游省电呢?这是一个比较深的命题,也不是三两天可以研究透的,这里只是抛砖引玉。

  • 合并渲染,减少渲染批次,将多个显示对象合并到一张纹理上,一次性渲染。比如全民飞机大战中的子弹和雷霆战机中满屏的子弹,这些子弹实际上长像差不多,只是位置或角度不太一样。另外,由多个图像合成的一个图案在某些场景中比较固定,那么在这个场景中可以事先直接生成这个纹理,每一帧直接渲染一次即可,而不必每次都重新组合,比如,卡牌类游戏中卡牌,卡牌有角色,有装饰物等组成,但是在某一个场景中可能相对比较固定,这时可以事先绘制一张纹理,后面直接使用,也可以减少渲染批次。
  • 减少渲染的面积,从前面的GPU-实验1中可以看出,在屏幕上绘制的面积越大,消耗越高,这个是美术设计需要注意的。
  • 如果没有开启深度测试,过度绘制(Overdraw)也需要引起注意,所谓过度绘制是指在一个像素点上绘制多次,这会会使用更多的计算资源和内存带宽,但最终只有最顶层绘制是可见的,其他的绘制就浪费了,所以降低过度绘制也可以降低消耗。
  • 有策略的降低FPS,降低FPS可以减少单位时间内的渲染次数。可以考虑在游戏准备界面,排行榜等界面降低FPS,比如天天酷跑,在开始游戏前,FPS被限制为30,游戏开始之后FPS才为60。天天飞车的FPS为30,但是当用户一段时间不点击界面后,FPS自动降低。
  • 控制CPU的使用率,较高的CPU使用率会让CPU进入全速模式,耗电量大增,可以采用多线程分担计算任务,在小米2S(4核)上实验,两个线程,每个线程CPU使用率12%的耗电量远小于一个线程CPU使用率24%。
  • 在3G模式下,应避免频繁收发数据包,一方面精简数据包,减少了收发数据的总量;另一方面可以将多个数据包合并一次发送,也减少了收发数据的次数。
  • 后台省电,当游戏切到后台后,Android系统将不再调用界面的Renderer,也就意味着游戏的渲染线程暂停了,不再消耗电量,这是系统自动暂停的,其他的一些工作线程则需要在代码中做相应的处理,暂停或是减少工作的频度,可以达到后台节能的效果。
  • 考虑到AMOLED屏幕在纯白色的情况下,耗电还是比较厉害的,游戏的色彩上也可以加以关注。

想了解你的手游有多耗电吗?上WeTest(http://wetest.qq.com/)为你的手游做一次耗电量测试吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯WeTest 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工具准备
  • 耗电因素分析
    • CPU
      • Screen
        • GPU
          • Network:
            • Audio:
              • File/Memory:
                • LBS:
                  • 耗电因素影响度:
                  • 手游如何省电:
                  相关产品与服务
                  测试服务
                  测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档