Android性能专项测试

来源:互联网 发布:长沙软件职业技术学院 编辑:程序博客网 时间:2024/05/28 09:32

Batterystats & Battery Historian Walkthrough
Battery Historian Charts
Android应用的耗电量统计
SupplicantState
Viewing Battery Use Data

batterystats使用条件

  • 5.0以上系统
  • battery-historian脚本

batterystats的启动

启动统计Battery数据的话,首先要初始化batterystats数据

<code class="hljs livecodeserver has-numbering">adb <span class="hljs-built_in">kill</span>-server> adb devices> adb <span class="hljs-built_in">shell</span> dumpsys batterystats <span class="hljs-comment">--reset</span></code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul>

上面的操作执行完毕后,拔掉手机,操作你的App,操作完成后,重新连接手机,执行下面的命令,收集Battery数据:
adb shell dumpsys batterystats > batterystats.txt
得到这些数据后,这个时候使用我们的battery-historian来生成我们可见HTML报告:
python historian.py batterystats.txt > batterystats.html

得到的报告如下:

这里写图片描述

Battery Historian指标

在Android性能专项测试之battery-historian试用一文中已经介绍了一些属性,但是目前又增加很多,下面来看看新加属性的意义:

属性意义gpsgps是否开启sync是否跟后台同步mobile_radio是否开启radiowake_reason唤醒原因phone_in_call进行通话

batterystats信息过滤

Battery History

电量相关数据的时间序列:

<code class="hljs lasso has-numbering">Battery History (<span class="hljs-number">0</span><span class="hljs-subst">%</span> used, <span class="hljs-number">152</span> used of <span class="hljs-number">256</span>KB, <span class="hljs-number">5</span> strings using <span class="hljs-number">256</span>):                    <span class="hljs-number">0</span> (<span class="hljs-number">9</span>) RESET:TIME: <span class="hljs-number">2015</span><span class="hljs-subst">-</span><span class="hljs-number">10</span><span class="hljs-subst">-</span><span class="hljs-number">09</span><span class="hljs-subst">-</span><span class="hljs-number">19</span><span class="hljs-subst">-</span><span class="hljs-number">50</span><span class="hljs-subst">-</span><span class="hljs-number">15</span>                    <span class="hljs-number">0</span> (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> status<span class="hljs-subst">=</span>charging health<span class="hljs-subst">=</span>good plug<span class="hljs-subst">=</span>usb temp<span class="hljs-subst">=</span><span class="hljs-number">324</span> volt<span class="hljs-subst">=</span><span class="hljs-number">3683</span> <span class="hljs-subst">+</span>running <span class="hljs-subst">+</span>wake_lock <span class="hljs-subst">+</span>wifi_full_lock <span class="hljs-subst">+</span>audio <span class="hljs-subst">+</span>screen <span class="hljs-subst">+</span>plugged data_conn<span class="hljs-subst">=</span><span class="hljs-literal">lte</span> phone_signal_strength<span class="hljs-subst">=</span>moderate brightness<span class="hljs-subst">=</span>bright <span class="hljs-subst">+</span>wifi_running <span class="hljs-subst">+</span>wifi wifi_signal_strength<span class="hljs-subst">=</span><span class="hljs-number">4</span> wifi_suppl<span class="hljs-subst">=</span>completed top<span class="hljs-subst">=</span>u0a34:<span class="hljs-string">"com.google.android.googlequicksearchbox"</span>                    <span class="hljs-number">0</span> (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> user<span class="hljs-subst">=</span><span class="hljs-number">0</span>:<span class="hljs-string">"0"</span>                    <span class="hljs-number">0</span> (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> userfg<span class="hljs-subst">=</span><span class="hljs-number">0</span>:<span class="hljs-string">"0"</span>               <span class="hljs-subst">+</span><span class="hljs-number">189</span>ms (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> volt<span class="hljs-subst">=</span><span class="hljs-number">3660</span>               <span class="hljs-subst">+</span><span class="hljs-number">216</span>ms (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> volt<span class="hljs-subst">=</span><span class="hljs-number">3688</span>             <span class="hljs-subst">+</span><span class="hljs-number">8</span>s387ms (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> <span class="hljs-subst">+</span>gps conn<span class="hljs-subst">=</span><span class="hljs-number">3</span>:<span class="hljs-string">"CONNECTED"</span>             <span class="hljs-subst">+</span><span class="hljs-number">9</span>s387ms (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> <span class="hljs-attribute">-top</span><span class="hljs-subst">=</span>u0a34:<span class="hljs-string">"com.google.android.googlequicksearchbox"</span>             <span class="hljs-subst">+</span><span class="hljs-number">9</span>s387ms (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> <span class="hljs-attribute">-gps</span> <span class="hljs-subst">+</span>top<span class="hljs-subst">=</span>u0a130:<span class="hljs-string">"com.example.android.sunshine.app"</span>             <span class="hljs-subst">+</span><span class="hljs-number">9</span>s569ms (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> <span class="hljs-subst">+</span>mobile_radio conn<span class="hljs-subst">=</span><span class="hljs-number">3</span>:<span class="hljs-string">"DISCONNECTED"</span>            <span class="hljs-subst">+</span><span class="hljs-number">10</span>s217ms (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> volt<span class="hljs-subst">=</span><span class="hljs-number">3577</span>            <span class="hljs-subst">+</span><span class="hljs-number">17</span>s294ms (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> volt<span class="hljs-subst">=</span><span class="hljs-number">3619</span>            <span class="hljs-subst">+</span><span class="hljs-number">20</span>s216ms (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> volt<span class="hljs-subst">=</span><span class="hljs-number">3576</span>            <span class="hljs-subst">+</span><span class="hljs-number">21</span>s530ms (<span class="hljs-number">1</span>) <span class="hljs-number">009</span> <span class="hljs-subst">+</span>wifi_scan            <span class="hljs-subst">+</span><span class="hljs-number">22</span>s801ms (<span class="hljs-number">1</span>) <span class="hljs-number">009</span> <span class="hljs-attribute">-wifi_scan</span>            <span class="hljs-subst">+</span><span class="hljs-number">29</span>s842ms (<span class="hljs-number">1</span>) <span class="hljs-number">009</span> <span class="hljs-attribute">-mobile_radio</span>            <span class="hljs-subst">+</span><span class="hljs-number">30</span>s252ms (<span class="hljs-number">2</span>) <span class="hljs-number">009</span> volt<span class="hljs-subst">=</span><span class="hljs-number">3616</span></code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li></ul>

Per-PID Stats

每一个进程执行了多长的时间

<code class="hljs livecodeserver has-numbering">Per-PID Stats:  PID <span class="hljs-number">0</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">396</span>ms  PID <span class="hljs-number">868</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">1</span>s682ms  PID <span class="hljs-number">1402</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">539</span>ms  PID <span class="hljs-number">0</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">6</span>s473ms  PID <span class="hljs-number">868</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">3</span>ms  PID <span class="hljs-number">1723</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">166</span>ms  PID <span class="hljs-number">4841</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">11</span>m1s479ms  PID <span class="hljs-number">19942</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">271</span>ms  PID <span class="hljs-number">868</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">42</span>ms  PID <span class="hljs-number">21564</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">172</span>ms  PID <span class="hljs-number">15488</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">67</span>ms  PID <span class="hljs-number">4841</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">6</span>s512ms  PID <span class="hljs-number">4841</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">6</span>s512ms  PID <span class="hljs-number">18217</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">126</span>ms  PID <span class="hljs-number">3876</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">228</span>ms  PID <span class="hljs-number">868</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">20</span>s440ms  PID <span class="hljs-number">16547</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">23</span>ms  PID <span class="hljs-number">22121</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">288</span>ms  PID <span class="hljs-number">22146</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">59</span>ms  PID <span class="hljs-number">16424</span> wake <span class="hljs-built_in">time</span>: +<span class="hljs-number">485</span>ms</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li></ul>

Statistics since last charge

<code class="hljs applescript has-numbering">Statistics <span class="hljs-keyword">since</span> <span class="hljs-keyword">last</span> charge:  System starts: <span class="hljs-number">0</span>, currently <span class="hljs-function_start"><span class="hljs-keyword">on</span></span> battery: <span class="hljs-constant">false</span>  Time <span class="hljs-function_start"><span class="hljs-keyword">on</span></span> battery: <span class="hljs-number">0</span>ms (<span class="hljs-number">0.0</span>%) realtime, <span class="hljs-number">0</span>ms (<span class="hljs-number">0.0</span>%) uptime  Time <span class="hljs-function_start"><span class="hljs-keyword">on</span></span> battery screen off: <span class="hljs-number">0</span>ms (<span class="hljs-number">0.0</span>%) realtime, <span class="hljs-number">0</span>ms (<span class="hljs-number">0.0</span>%) uptime  Total <span class="hljs-command">run</span> <span class="hljs-property">time</span>: <span class="hljs-number">34</span>s <span class="hljs-number">134</span>ms realtime, <span class="hljs-number">34</span>s <span class="hljs-number">134</span>ms uptime  Start clock <span class="hljs-property">time</span>: <span class="hljs-number">2015</span>-<span class="hljs-number">10</span>-<span class="hljs-number">09</span>-<span class="hljs-number">19</span>-<span class="hljs-number">50</span>-<span class="hljs-number">15</span>  Screen <span class="hljs-function_start"><span class="hljs-keyword">on</span></span>: <span class="hljs-number">0</span>ms (<span class="hljs-comment">--%) 0x, Interactive: 0ms (--%)</span>  Screen brightnesses: (no activity)  Connectivity changes: <span class="hljs-number">2</span>  Mobile total received: <span class="hljs-number">0</span>B, sent: <span class="hljs-number">0</span>B (packets received <span class="hljs-number">0</span>, sent <span class="hljs-number">0</span>)  Phone signal levels: (no activity)  Signal scanning <span class="hljs-property">time</span>: <span class="hljs-number">0</span>ms  Radio types: (no activity)  Mobile radio active <span class="hljs-property">time</span>: <span class="hljs-number">0</span>ms (<span class="hljs-comment">--%) 0x</span>  Mobile radio active adjusted <span class="hljs-property">time</span>: <span class="hljs-number">0</span>ms (<span class="hljs-comment">--%)</span>  Wi-Fi total received: <span class="hljs-number">0</span>B, sent: <span class="hljs-number">0</span>B (packets received <span class="hljs-number">0</span>, sent <span class="hljs-number">0</span>)  Wifi <span class="hljs-function_start"><span class="hljs-keyword">on</span></span>: <span class="hljs-number">0</span>ms (<span class="hljs-comment">--%), Wifi running: 0ms (--%)</span>  Wifi states: (no activity)  Wifi supplicant states: (no activity)  Wifi signal levels: (no activity)  Bluetooth <span class="hljs-function_start"><span class="hljs-keyword">on</span></span>: <span class="hljs-number">0</span>ms (<span class="hljs-comment">--%)</span>  Bluetooth states: (no activity)</code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li></ul>

Estimated power use (mAh)

目前只能算比较粗略的估计,不能作为实际消耗数据,期待google更为精准的数据

<code class="hljs rust has-numbering">  Estimated power <span class="hljs-keyword">use</span> (mAh):    Capacity: <span class="hljs-number">3220</span>, Computed drain: -<span class="hljs-number">2444.11370879</span>, actual drain: <span class="hljs-number">0.00000000</span>    Idle: <span class="hljs-number">24.7</span>    Uid u0a46: -<span class="hljs-number">0.01197222</span>    Uid u0a100: -<span class="hljs-number">0.04600000</span>    Uid u0a29: -<span class="hljs-number">0.07444444</span>    Uid u0a118: -<span class="hljs-number">0.14044444</span>    Uid u0a104: -<span class="hljs-number">0.73288889</span>    Uid <span class="hljs-number">1000</span>: -<span class="hljs-number">2.12172492</span>    Uid u0a14: -<span class="hljs-number">3.36807500</span>    Uid u0a99: -<span class="hljs-number">3.78076692</span>    Phone calls: -<span class="hljs-number">19.54370833</span>    Cell standby: -<span class="hljs-number">107.36537361</span>    Screen: -<span class="hljs-number">2331.64616000</span></code><ul style="display: block;" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li></ul>

Per-app mobile ms per packet

radio唤醒时间除以数据包发送次数,该时间越小代表性能越好,一个高效的App会将所有的流量转化为batches。

All partial wake locks

所有程序中wakelock,关注持续时间和数量

6.0的更新

试用了下6.0的batterystats,现在信息比5.0的更加全面,不但详细列举了不同app的耗电量,还把app中各个子模块的耗电量也输出了:

<code class="hljs fix has-numbering"><span class="hljs-attribute">  Estimated power use (mAh):    Capacity: 3220, Computed drain: 1163, actual drain: 451-644    Screen: 361    Uid u0a99: 189 ( cpu</span>=<span class="hljs-string">13.2 wake=0.000408 radio=102 wifi=6.35 gps=67.8 )    Uid u0a94: 127 ( cpu=6.99 wake=0.00528 radio=118 wifi=0.451 gps=0.181 sensor=0.836 )    Uid 0: 111 ( cpu=30.2 wake=5.13 radio=75.0 wifi=0.242 )    Cell standby: 79.8 ( radio=79.8 )    Uid u0a95: 63.7 ( cpu=10.9 wake=1.59 radio=50.0 wifi=0.0566 camera=1.15 )    Uid 1000: 61.1 ( cpu=59.9 wake=0.642 wifi=0.100 sensor=0.525 )    Uid u0a98: 22.2 ( cpu=0.261 wake=0.00395 radio=21.9 wifi=0.0817 )    Uid u0a100: 19.0 ( cpu=10.4 wake=0.00502 radio=7.90 wifi=0.624 gps=0.00150 sensor=0.0554 )    Uid u0a35: 14.3 ( cpu=14.0 wake=0.158 wifi=0.0804 )    Uid u0a15: 14.1 ( cpu=3.18 wake=1.72 radio=8.71 wifi=0.466 )    Uid u0a108: 13.9 ( cpu=3.23 radio=10.6 wifi=0.0228 )    Uid u0a103: 12.2 ( cpu=2.79 wake=0.00260 radio=8.11 wifi=0.811 gps=0.291 sensor=0.187 )    Uid u0a110: 10.8 ( cpu=0.910 radio=9.92 wifi=0.00682 )    Uid u0a105: 10.6 ( cpu=5.59 radio=4.95 wifi=0.0642 )    Idle: 9.40</span></code>
0 0
原创粉丝点击