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试用一文中已经介绍了一些属性,但是目前又增加很多,下面来看看新加属性的意义:
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
- Android性能专项测试
- Android性能专项测试之MAT
- Android性能专项测试之Systrace工具
- Android性能专项测试之GPU Monitor
- Android性能专项测试之Network monitor
- Android性能专项测试之Batterystats
- Android性能专项测试之Systrace工具
- Android性能专项测试之Network monitor
- Android性能专项测试之GPU Monitor
- Android性能专项测试之Network monitor
- Android性能专项测试之MAT
- Android性能专项测试之Systrace工具
- Android性能专项测试之GPU Monitor
- Android性能专项测试之Network monitor
- Android性能专项测试之MAT
- android性能专项测试流程和学习计划
- Android性能专项测试之battery-historian
- Android性能专项测试之Batterystats
- jq select 总结
- Cocos2d-x 3.8.1学习之路:(2)从windows到android
- Linux管道基础知识
- SVN部署
- LinuxCNC+EtherCAT(5)之关于LinuxCNC和EMC
- Android性能专项测试
- 求1~n与x互质的数的个数(6个题、容斥原理)
- 04-树4 是否是同一棵二叉搜索树
- 欢迎使用CSDN-markdown编辑器
- LeetCode60——Permutation Sequence
- html
- Android----我所收集的Android学习资源
- 学习笔记--- ImageSwitcher控件
- SQL数据库中数据的定义和数据查询