最近發現本身學的不少東西沒有作好積澱的工做,也萌生了寫一些東西的念頭。本人也沒有寫博客的習慣,下邊就寫一下手機端的性能測試。php
最近公司,要咱們從事對競品的性能測試,我負責CPU和內存的性能測試,下面就和你們來分享一下android應用程序的CPU和內存的性能測試。linux
首先稍作分析一下測試環境:咱們知道CPU和內存佔用是一個實時變化的狀態,而市面上尚未具體的哪款android應用能作到實時監控CPU和內存佔用並使用log日誌保存。考慮到android的底層框架是基於Linux的平臺,全部咱們能夠經過Linux的資源監控命令來實現對android平臺的資源實時監控。android
要作到上邊的測試環境的實現,須要具有如下幾點:shell
一、被測試的手機具有root權限:由於涉及到底層的linux命令,須要讀取或執行相應的文件。至於如何root你的手機,不一樣型號的手機root的方法不同,這裏就不作介紹了。具體的能夠在網上搜索一下本身手機型號的root教程,這裏就不作介紹了。網絡
二、須要搭建android的開發環境:由於咱們須要監控的是具體的某個應用資源佔用的狀況,因此須要知道這個應用對應的「安裝的包名」是什麼,這就須要使用android開發環境中DDMS模塊中的Devices中查看,當啓動被測軟件時,其主應用程序的安裝包名通常就會在列表的最下端出現(如google地圖等除外,開機就啓動了)。框架
經過上邊的截圖咱們能夠看到百度地圖的主程序包名爲:com.baidu.BaiduMap性能
因爲篇幅有限,具體的android開發環境的搭建流程,能夠參見網絡上的教程,這裏就不贅述了。測試
三、經過Linux命令監控。前邊都是一些初始的準備條件,下邊其實就是實際的操做流程:google
(1)adb shell (進入linux的底層)spa
(2)echo 3>/proc/sys/vm/drop_caches (清除一下系統cache)
(3)top -d 1 | grep com.baidu.BaiduMap (以百度地圖爲例,每一秒打印一次資源利用狀況)
至於上邊每一列表明什麼含義呢?因爲使用到了複合查詢「管道符」的方式,因此必須擁有root權限,不然grep的命令沒法識別。
在這裏咱們看到cmd並無顯示出所對應的列的標題,因此咱們能夠單獨經過top命令來了解到:
至於以上各列的含義我不說我想你們也應該猜獲得了,在這裏僅說一下咱們要用到的兩個參數,其餘的能夠再網上查詢瞭解:
|--CPU%:CPU佔用率
|--RSS:實際佔用的物理內存數,單位KB
咱們能夠針對不一樣的業務,打印出不一樣的「標籤」,用於區別如今從事的那個業務,併爲後期分析各業務模塊中CPU和內存的佔用以及對比使用。
上邊就是對具體的某款android應用的評測的數據的獲取,咱們將日誌複製到excel的表格中,並畫出相應的數據表。
最後,能夠根據獲得的圖表進行性能分析(多款同類軟件進行比較),得出本公司軟件的評審標準出來。
你們有什麼見解意見,請及時拍磚~