開發者如何降低應用能耗

時間 :18:36 取得文章短網址

文章分類 : Blog, News

美國科技博客 The Next Web 週二刊登了流動行業資深產品經理 Rajat Harlalka 的文章,嚮應用開發者介紹了如何降低應用能耗的方式。智能手機的電池續航時間是用家非常關心的一個問題,而應用的能耗過大將導致用家不願使用該應用。

以下為文章全文:

儘管智能手機給應用開發者帶來了機遇,但流動裝置有限的資源也製造了挑戰。而挑戰之一在於電量消耗。如果電量消耗過大,那麼應用將遭到差評。在某些情況下,這甚至會導致用家徹底刪除應用。因此相對於傳統的對性能和記憶體消耗的關注,應用開發者正越來越注重應用的能耗優化。

降低應用能耗可以採用多種技術,其中包括一些深度分析和優化。這裡將提供簡單的指南,其中的做法將明顯提升應用的性能。

顯示屏

顯示屏是耗電量最大的元件之一。一篇對流動遊戲能耗管理的研究論文估計,在 HTC Magic 手機中,如果所有元件都全功率運行,那麼液晶顯示屏將佔整個系統功耗的 45% 至 50%。因此對於顯示屏,有兩點需要牢記:

1. 智能手機操作系統的設計使得在沒有用家輸入的情況下,屏幕會自動熄滅。應用開發者可以對這一設定進行調整,但只在有必要時才這樣做。

2. 第二種方式可能相對複雜。在正常情況下,圖像和顯示屏的亮度為預設設定。然而,通過調高圖像和內容的亮度,同時減弱顯示屏的整體亮度,應用可以提供同樣的可感知亮度。這樣的做法適用於視頻應用和遊戲,而這些應用往往功耗較大。

網絡連接

除顯示屏之外,無線通訊元件,包括 GSM、3G 和 WiFi 處理器是流動裝置中電量消耗的第二「大戶」。新加坡國立大學的一篇論文提到,當顯示屏點亮時,流動數據通訊佔流動裝置能耗的約 40%,而在顯示屏熄滅時佔總能耗的約 70%。以下一些方式可以限制應用對網絡連接的使用。

1. 如果使用後端伺服器,那麼應用應當採用突發模式傳輸數據,而非週期性傳輸。在週期性傳輸模式下,儘管對流量的消耗不大,但對硬件資源的利用效率會很低。一個簡單的做法是,在用家主動請求數據傳輸的同時進行週期性數據傳輸。請勿建立太多的並發 TCP 連接,而是使少量 TCP 連接或 HTTP 管道持續存在。

2. 數據緩存也可以減少應用與伺服器通訊的頻率。本地緩存和伺服器緩存都可以減少通過網絡的數據傳輸。

3. 基於位置的服務尤其耗電,因此在沒有必要的情況下,不要持續更新裝置位置。例如,如果應用需要獲取用家的行動軌跡,而不是單獨某一位置,那麼可以使用少數幾個位置點,基於算法獲得整體的運動訊息。而另一項技術則是在裝置沒有運動時關閉 GPS 模塊。開發者可以利用手機的加速計來感應運動是否開始。

4. 流動廣告通常也需要頻繁進行網絡通訊。近期的一項研究表明,在某一應用的總通訊能耗中廣告佔 65%,而在總能耗中也佔 23%。

CPU 的使用

在優化應用性能時,應用的功耗也將得到優化。通過減少不必要的電腦任務或優化必要任務的執行,CPU 利用率都可以獲得下降。

1. 對於遊戲,考慮降低每秒幀數。在許多情況下,用家肉眼無法分辨出幀數差異,除非幀率過低。肉眼分辨的極限通常為每秒 23 至 30 幀,這也是大部分視頻應用和遊戲採用的幀率。

2. 當應用終止時停止應用的線程,否則在應用關閉的情況下將出現無用代碼。

3. 開發者需要了解目標裝置的硬件配置。例如,當設計音頻 / 視頻應用時,應當選擇硬件支援的格式和編解碼方式。如果採用硬件加速而非軟件加速,那麼 CPU 利用率將可以下降。

4. 使用雲電腦技術將流動應用的電腦任務放在雲端執行。

5. 避免週期性輪詢,以及過分頻繁地訪問存儲模塊。

6. 在複雜電腦任務中考慮使用查詢表。

關閉不必要的硬件

智能手機包含多種元件,例如攝像頭、加速計,以及其他多種傳感器。在調用裝置硬件時,開發者應當確保軟件帶有參數,當應用不活躍時關閉外設硬件。在用家不使用時主動關閉藍牙和 GPS 等模塊將可以極大地省電。

挑戰和工具

許多位於應用和硬件之間的中間件能幫助開發者更方便地開發流動應用,但這也意味著開發者無法自主掌握硬件資源的消耗。不幸的是,開發者目前沒有太多工具去改進應用能耗。實際上,許多開發者甚至並不清楚自己應用的能耗。

優秀的能耗管理需要開發者了解,電量被甚麼元件,以及以甚麼樣的方式消耗。開發者目前只有很少的工具和資源去檢查應用的能耗情況。在 iPhone 上,開發者可以打開能耗診斷工具,隨後使用模板去分析日誌數據。PowerTutor 工具可以在 Android 手機上實現類似的功能。不過,這些軟件工具有著自己的侷限,即本身也會增加能耗。

衡量能耗的最佳方式是從電池層面去分析,開發者可以在受控的環境中使用數字萬用表去測量。

意義重大

Motorola 流動前 首席執行官 桑傑→ 賈(Sanjay Jha)曾表示,設計拙劣的應用將大量消耗手機電量。電池續航時間是智能手機用家非常關心的問題,而一些應用的評價顯示,許多用家對應用能耗不滿。另一方面,許多應用開發者對能耗管理沒有太多經驗,因此到目前為止流動應用的能耗大多很高。

這篇文章中提到的方式儘管很簡單,但也能大幅降低應用能耗。不過請記住,所有這些技術都將帶來副作用,包括對應用性能和記憶體管理產生不利影響。開發者可以基於自己的特定需求選擇最合適的方式。

你可能會對以下文章有興趣:

Leave a Reply

Your email address will not be published.