2013年8月17日 星期六

美博客:開發者如何降低應用能耗






  導語:美國科技博客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手機上實現類似的功能。不過,這些軟件工具有著自己的局限,即本身也會增加能耗。

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

  意義重大

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

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



.美博客:開發者如何降低應用能耗
http://digital1010.blogspot.com/2013/08/blog-post_9697.html