Android CPU耗電量測試

來源:互聯網
上載者:User

標籤:outline   裝置   screen   adb shell   state   init   border   encoding   roi   

Android CPU耗電量測試

在測試Android app時,不僅僅要關注app的功能,也好關注app的效能指標,cpu、記憶體、流量、電量等。簡單介紹下電量測試中的cpu耗電。

影響耗電的因素
  • CPU
  • Screen
  • Network (3G/wifi)
  • sensor & gps
  • WakeLock

電量測試方法
  1. 安裝電池管理的軟體,管家、衛士一類的軟體。
  2. 自己讀取Android的核心日誌,電量變化廣播等。
  3. 物理裝置,安培輪等

這裡主要介紹讀取核心檔案,計算出cpu的電量消耗。

步驟主要如下:

  1. 抓取指定app佔用的cpu時間
  2. 擷取cpu在各個頻率下的已耗用時間
  3. 根據不同頻率下的不同耗電功率,計算出總的耗電消耗。
POWER_PROFILE.XML

每個Android裝置都存在這樣的一個檔案,這個檔案定義了各個硬體的功率。不同的手機,內容不同。我的如下(單位mAh,意思是一個小時,能耗電多少mAh):

    <?xml version="1.0" encoding="utf-8"?>     <device name="Android">         <item name="none">0</item>         <item name="screen.on">71</item>         <item name="bluetooth.active">17</item>         <item name="bluetooth.on">0.3</item>         <item name="screen.full">380</item>         <item name="wifi.on">0.3</item>         <item name="wifi.active">96</item>         <item name="wifi.scan">70</item>         <item name="dsp.audio">44</item>         <item name="dsp.video">280</item>         <item name="radio.active">250</item>         <item name="radio.scanning">82</item>         <item name="gps.on">1</item>         <array name="radio.on">             <value>3.4</value>             <value>3.4</value>         </array>         <array name="cpu.speeds">             <value>12000000</value>             <value>10000000</value>             <value>800000</value>             <value>500000</value>             <value>200000</value>         </array>         <item name="cpu.idle">4</item>             <array name="cpu.active">             <value>577</value>             <value>408</value>             <value>249</value>             <value>148</value>             <value>55</value>         </array>         <item name="battery.capacity">2100</item>     </device> 
如何得到power_profile.xml檔案

該檔案存在手機的/system/framework/framework-res.apk包裡,需要使用apk-tool對apk進行反編譯,反編譯後,在$output/res/xml檔案夾中。

擷取APP執行時間
  1. 擷取pid, adb shell ps | grep {appName}或者adb shell top -n 1 | grep ${appName}
  2. 擷取pid執行時間,cat /proc/${pid}/stat, 這個檔案中的第14列到17列相加得到的就是從開機到此刻,app一共佔用多少cpu時間(設這裡值為T1),這裡的單位是jiffies, 這個單位的意思是cpu的運算次數,如果cpu的頻率為1G,那麼1 jiffies = 1/1G 秒。
  3. 不斷去cat /proc/${pid}/stat,擷取cpu佔用時間,減去第二步的T1,就是這段時間app的cpu佔用時間。
  4. 擷取cpu在不同頻率下的工作幾率。android的cpu會在不同主頻下工作,/sys/devices/system/cpu/cpu0/cpufreq/stats/time_instate
    放了cpu在各個頻段的佔用時間,注意是整個系統佔用時間,根據這個幾率,計算出cpu的每個頻率下的工作時間,然後再乘以power_profile.xml中定義的單位耗電,累加得到cpu消耗。
  5. http://www.yeetrack.com/?p=1045

Android CPU耗電量測試

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.