性能優化之省電篇

【原文地址 點擊打開鏈接

移動網絡下的性能優化之省電篇

informationunload

隨着3G和4G網絡的普及,用戶使用APP的場景更多地集中在移動網絡下。同時也帶來了手機電量消耗更快和網絡延遲更高的問題。想開發出用戶體驗更好的應用,就需要對移動網絡有更深入的瞭解。本系列文章分爲上下兩篇,分別介紹如何開發出更省電和網絡延遲更低的移動應用程序。本篇文章主要介紹移動網絡的一些基本工作原理以及降低手機耗電的優化方案。

初窺2G,3G,4G網絡

說起移動網絡我們不得不提香農定理。香農定理是所有通信制式最基本的原理,它描述了有限帶寬、有隨機熱噪聲信道的最大傳輸速率與信道帶寬、信號噪聲功率比之間的關係。其用公式可表示爲:

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,可以作爲一個參考。同樣也不能永無休止的重連,重連幾次還連不上,可以直接把問題拋給用戶,由用戶決定是否繼續重連。

數據緩存

最省電的方式就是不使用移動網絡,數據緩存能夠大大減少網絡請求的次數,達到省電的效果。

以上就是降低手機電量消耗的優化方案。在下一篇文章中,我們會詳細分析移動網絡延遲較高的原因,並給出降低網絡延遲的方案,敬請期待。

qrcode_for_gh_55dcc2c31752_344

-END-

知識共享許可協議

本站內容採用知識共享署名 4.0 國際許可協議進行許可。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章