移动网络下的性能优化之省电篇


随着3G和4G网络的普及,用户使用APP的场景更多地集中在移动网络下。同时也带来了手机电量消耗更快和网络延迟更高的问题。想开发出用户体验 更好的应用,就需要对移动网络有更深入的了解。本系列文章分为上下两篇,分别介绍如何开发出更省电和网络延迟更低的移动应用程序。本篇文章主要介绍移动网 络的一些基本工作原理以及降低手机耗电的优化方案。

初窥2G,3G,4G网络

说起移动网络我们不得不提香农定理。香农定理是所有通信制式最基本的原理,它描述了有限带宽、有随机热噪声信道的最大传输速率与信道带宽、信号噪声功率比之间的关系。其用公式可表示为:

Java代码
  1. C = B lb(1+S/N)

其中:C是信道支持的最大速度或者叫信道容量;B是信道的带宽;S是平均信号功率;N是平均噪声功率;S/N即信噪比。

移动网络技术的发展也无法跳出这个公式。从最初的1G网络技术到现在的4G网络技术,都是在利用这个公式提高速度。要么让频段资源得到充分的利 用,要么提高整体带宽。但是无论如何改进,频段资源都是有限的。在拥挤的城市或者人扎堆的地方,很容易分配不到无线资源。即使分配到资源,也会因为使用人 数过多而导致速度变慢。所以不得不制定出更优秀的策略来提高资源的有效利用。这就是我们下面要讲的无线资源控制(RRC)。
无线资源控制(RRC)

什么是无线资源控制协议呢?我们先来看看手机发送一条信息的通信过程。

欲通信,先同步。手机在空闲状态下是无法通信的,当有通信需求时,手机会自动搜索信号,直到它搜到一个“信号非常强的全0序列”,就完成了锁定某个频道的过程。锁定频道之后,手机接下来就需要和通信系统校准时间,这就是同步过程。

欲接入,先申请。取得了频率和时间上的同步后,手机向控制平台发送通信请求,控制平台收到请求后,会找到空闲的时隙资源(时分多址技术中术语)分 配给手机,并将手机切换到Active状态,这样手机就可以通信了。通信完成后,过一段时间,控制平台又会回收手机占用的通信资源,进入低耗能模式或者空 闲模式。整个这一通信过程就是RRC所做的事情。

移动网络耗电的原因

前面提到了控制平台下不同模式的切换,下面是它的具体工作原理:手机在不传输数据的情况下一般处于空闲状态(Idle),当有发送数据需求时必须 向控制平台发送申请。只有将手机切换到Active状态,也就是高耗能模式下才能进行通信。这一切换过程在4G网络下需要花费100ms的时间。通信完成 后,手机不会一直处于高耗能模式下等待数据传输,它会切换到低耗能模式(Short sleep)。如果手机处于低耗能模式时接到数据发送请求,那么它又会切换到高耗能模式来发送数据。在频繁的数据请求中,它会在低耗能模式和高耗能模式不 断的切换,而在不发送数据时,在10s后会再次进入空闲模式下。它会周期性的切换模式来确保资源的有效利用。

为什么存在耗能模式切换呢?因为无线资源是相对短缺的资源,在没有数据请求时就要对无线资源进行回收。

移动网络只有在处于DCH(高耗能模式)和 FACH(低耗能模式)下才会消耗手机电量。从上图可以看出,一次耗能模式切换大概需要花费10s,而且不管你传输的数据大小,它都会触发一次耗电周期,消耗10s的电量。

假如一个手机有5Wh(18000 J)总电量,手机完成一次从空闲模式切换到高耗能模式,再到低耗能模式,再到空闲模式的循环大概需要10J能量。如果每分钟切换一次,那么一个小时需要消 耗60*10J = 600J电量,也就相当于总电量的3%。如果一个APP在后台每分钟发送一个请求,那么手机处于待机状态下一天就耗掉了3%* 24 = 72%的电。这就是为什么智能手机即使在待机状态下耗电量也非常大的原因。
如何省电

下面是我们根据上面提到的原因给出的五个可行的优化方案:

合并请求

在移动通信中,无论传输数据大小,每次数据传输都会触发一次大约10s的耗电。合并请求不仅能减少 DNS请求时间、服务器压力和HTTP请求,而且能够大大减少移动网络下手机电量的消耗。

预取数据

和合并请求原理一样,预取数据能让手机快速切换到空闲模式,并且在这个状态下保持更长的时间,以达到省电的目的。

避免轮询

轮询是指不管服务器端有没有更新,客户端都定时的发送请求进行查询。轮询可能会返回更新的信息,也可能会返回空的信息。轮询不仅增加了服务负担,而且会使手机长期处于高耗能模式,在几小时内就耗尽电池。

重连机制优化

一般重连机制都有几个重要参数:心跳时间间隔、重连超时时间及重连次数。其中心跳包每天会将手机从空闲模式唤醒近300次,一般的Android 手机每天有超过15-20%的电量被消耗在发送过度频繁的心跳上。另外如果手机连不上服务器而不断的重试,在几小时内就会耗光电池。所以心跳时间不宜过 短,据测试微信心跳时间为300s,可以作为一个参考。同样也不能永无休止的重连,重连几次还连不上,可以直接把问题抛给用户,由用户决定是否继续重连。

数据缓存

最省电的方式就是不使用移动网络,数据缓存能够大大减少网络请求的次数,达到省电的效果。

以上就是降低手机电量消耗的优化方案。在下一篇文章中,我们会详细分析移动网络延迟较高的原因,并给出降低网络延迟的方案,敬请期待。

本文来自:WildDog Blog

  1. da shang
    donate-alipay
               donate-weixin weixinpay

发表评论↓↓