足球资料库数据/孙祥/nba五佳球/足球直播哪个平台好 - cctv5今日现场直播

首頁 > 知識庫 > 正文

移動網絡下的性能優化之省電篇
2016-03-01 16:22:15   來源: mengyidan1988   評論:0 點擊:

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



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

數據緩存

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

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

本文來自:WildDog Blog

相關熱詞搜索:android 性能 mobile 移動開發

上一篇: 微軟收購Xamarin
下一篇:我是如何從煤礦工成為程序員的

分享到: 收藏