4、硬體效能優化
硬體效能指由硬體或軟體引起的導致電池消耗的效能,具體包括螢幕、感測器、cpu、wakelock、jobscheduler等耗電效能。
4.1電量資訊獲取
—通過手機系統檔案。直接通過手機系統檔案「/sys/class/power_supply/battery/uevent」來獲取手機電量相關資訊(包括手機的電流、電壓、電量和溫度資訊),這是一種簡單暴力的方式,雖然存在一定的適配問題,但有時候也是最有效的一種方式。
—cpu分析。對於cpu過高使用導致的耗電,最簡單直觀的方式是通過top命令實時檢視各個執行緒的cpu占用情況,如果某個執行緒持續占用超過10%就要重點關注了。(top命令需要借助adb shell,如果無法直接使用top命令,可以通過anr的traces.txt檔案進行分析,檔案中線程裡的schedstat表示執行緒消耗cpu的情況)。
—batterystats工具和battery historian指令碼。
——概述。基於batterystats工具,通過adb命令dump出電量使用的統計資訊,再通過battery historian指令碼分析呈現dump出的統計資訊檔案。
——使用條件
———-android 5.0+(api 21+)
———-phython/go語言環境。battery historian是google開源的歷史資料獲取工具,基於go語言開發,基於phython環境執行指令碼historian.py或者基於battery-historian.go來分析。
說明:上面描述的是圖形化展示方式,如果僅僅只需要獲取電量資訊,可以直接使用命令adb shell dumpsys batterystats,列印出來log中即有電量資訊,android 5.0中資訊比較粗糙,android 6.0+中有更細化的耗電量資訊。
——-耗電量統計api.
android系統耗電量統計api一直存在,只不過都是隱藏的。android系統中的設定–>電池功能呼叫的就是這個api.
—— gsam battery monitor。檢測手機電池電量消耗去向,以折線圖進行統計展示。手機需要root,應用需要獲取root許可權。
5、耗電分析
耗電量計算
—android中手機自帶的設定中有電量統計,其本質是通過android framwork層中專門負責電量統計服務的batterystatsservice來實現的,其在activitymanagerservice中建立,**如下:
手機中的耗電大戶/主要耗電場景
—手機螢幕。毋庸置疑,手機中最耗電的模組肯定是螢幕裡。亮屏時間越長,電量消耗越快。
—cpu相關。複雜運算邏輯、無限迴圈等會直接導致cpu負載過高,耗電劇增。
—網路相關。一般情況下,網路相關(網路請求、資料傳輸、網路切換等)是僅次於螢幕等耗電大戶。
—wakelock(android)。wakelock是android系統中用於優化電量使用情況等一種手段,通過在使用者一段時間沒有操作的情況下讓螢幕和cpu進入休眠狀態來減少電量消耗。一些應用中出於特定業務場景呼叫powermanager.wakelock來使cpu保持持續運轉,而釋放需要時間,甚至呢根本就忘記釋放了,滅屏後cpu卻還在一直運轉著,從而大大增加了耗電量。
—gps。gps定位涉及gps位置感測器,也是耗電大戶。平時不使用時應該關閉。
—camera。camera涉及前後攝像頭硬體,如果一直使用(錄屏等),耗電也會非常可觀。
6、電量優化
6.2 介面相關
—離開某個介面後停止對應的耗電活動。例如,使用者離開了a介面,而對應的耗電活動並沒有及時停止,就會造成資源浪費。
—應用進入後台禁止異常消耗電量。
6.3 定位相關
—使用gps後記得及時關閉,減少更新頻率,根據實際情況切換gps和網路,不要任何時候都同時使用兩者。
—對定位要求不高的業務場景,盡量用網路定位代替gps.
—慎用持續定位,對於大多數場景,使用一次定位介面即可。
—慎用被動定位,防止被動定位喚醒。
6.5 訊息廣播。程式中避免頻繁地監聽系統廣播或業務訊息造成嚴重耗電問題,靈活控制訊息廣播接受的有效與無效狀態。
6.6 h5頁面。關注並測試h5頁面的耗電量。
6.7.2 定時任務選擇。
android中可以通過handler/alarmmanager以及jobschedule(android5.0+) 3種方式執行定時任務,前台任務建議使用handler/timer,簡單直觀;後台任務,對排程時機沒有強烈要求等場景,建議使用jobschedule來管理任務(android 5.0+),對於觸發事件準確性要求非常高的場景,如果沒法通過演算法降級處理,再考慮alarmmanager,對於wakeup型別且exact排程模式的alarmmanager任務一定要慎用。
6.7.4 google官方優化電池壽命建議。
—監控電池電量和充電狀態。根據相應的狀態來調整應用的更新頻率,比如在充電中就可以無慮更新應用對電池的消耗,而如果裝置在消耗電池電量,則降低更新頻率。
—判斷並監測裝置的底座狀態和型別。通過判斷和監聽當前底座型別及種類來改變應用程式行為。
—確定和監控網路連線狀態。如果裝置沒有連線網際網路,則沒有必要喚醒裝置類進行更新操作,連線移動網際網路比連線wi-fi使用更低的更新頻率等。
—按需操作broadcastreceiver。可以在執行時切換自己在mainfest中宣告的broadcastreceiver,以便根據當前裝置狀態禁用不需要開啟的broadcastreceiver,從而節省耗電,提高應用效率。
Drupal效能優化 蜜蜂培訓效能優化一
大家一直都說drupal的效能不怎麼樣,跑起來慢,即使不是在使用者量大的時候,最近公司的蜜蜂培訓產品在乙個客戶的使用過程中,由於使用者量及資料量的激增,就遇到了比較大的效能問題,這篇文章就記錄了整個優化過程,最終將效能調整到了正常水平。蜜蜂培訓系統由於是包含報名 簽到 投票 評估 考試等場景,而這些...
ORACEL SQL 效能優化 一
關鍵字 oracel sql performance tuning 出處 http www.dbasupport.com 1.選用適合的oracle優化器 oracle 的優化器共有3種 a.rule 基於規則 b.cost 基於成本 c.choose 選擇性 設定預設的優化器,可以通過對init....
SQL效能優化(一)
1.選擇最有效率的表名順序 只在基於規則的優化器中有效 oracle的解析器按照從右到左的順序處理from子句中的表名,因此from子句中寫在最後的表 基礎表 driving table 將被最先處理.在from子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表.當oracle處理多個表...