Android客戶端效能測試—CPU、啟動時間(二)
前言:
1.繼上篇“記憶體”,這篇講述的是“CPU”和“啟動時間”
2.準備工作,及如何獲取程序PID,請參見上篇文章
一、查取android手機的整體CPU利用率
1、top命令
(1).開啟cmd命令進入adb shell 環境
(2).輸入 top -n 1 -d 5
2、命令分析
-m:最多顯示多少個程序
-n:重新整理次數
-d:重新整理間隔(5s)
-s:按哪列排序
-t:顯示執行緒,而不是程序
3、CPU佔用率:User 28%, System 26%, IOW 0%, IRQ 0%
User:使用者程序
System:系統程序
IOW:IO等待時間
IRQ:硬中斷時間
4、CPU使用情況:User 320 + Nice 0 + Sys 297 + Idle 518 + IOW 2 + IRQ 1 + SIRQ 2 = 1140
User :處於使用者態的執行時間,不包含優先值為負程序
Nice :優先值為負的程序所佔用的CPU時間
Sys :處於核心態的執行時間
Idle : 除IO等待時間以外的其它等待時間
IOW IO:等待時間
SIRQ : 軟中斷時間
IRQ :硬中斷時間
5、程序屬性: PID PR CPU% S #THR VSS RSS PCY UID Name
PID :程序在系統中的ID
CPU% : 當前瞬時所以使用CPU佔用率
S :程序的狀態,其中S表示休眠,R表示正在執行,Z表示僵死狀態,N表示該程序優先值是負數。
#THR :程式當前所用的執行緒數
VSS: 虛擬耗用記憶體(包含共享庫佔用的記憶體)
RSS: Resident Set Size 實際使用實體記憶體(包含共享庫佔用的記憶體)
PCY:程序/執行緒的排程策略
UID :運行當前程序的使用者id
Name:程序名稱
二、查取某個應用的CPU佔用情況
1、dumpsys cpuinfo命令
輸入:dumpsys cpuinfo pid/包名
2.8%:總的CPU佔用率
22370:PID
1% :在使用者中花1%的時間
1.8%:在核心中花1.8%時間
三、啟動時間:
1、概念:
冷啟動:當啟動應用時,後臺沒有該應用的程序,這時系統會重新建立一個新的程序分配給該應用,這個啟動方式就是冷啟動。
熱啟動:當啟動應用時,後臺已有該應用的程序(例:按back鍵、home鍵,應用雖然會退出,但是該應用的程序是依然會保留在後臺,可進入任務列表檢視),所以在已有程序的情況下,這種啟動會從已有的程序中來啟動應用,這個方式叫熱啟動。
首次啟動:首次啟動嚴格來說也是冷啟動,之所以把首次啟動單獨列出來,一般來說,首次啟動時間會比非首次啟動要久,首次啟動會做一些系統初始化工作,如快取目錄的生產,資料庫的建立,SharedPreference的初始化,如果存在多 dex 和外掛的情況下,首次啟動會有一些特殊需要處理的邏輯,而且對啟動速度有很大的影響,所以首次啟動的速度非常重要,畢竟影響使用者對 App 的第一映像。
2、am start -W packagename/activity 命令 (W大寫)
通過 logcat -b events -s am_activity_launch_time 命令可獲取包名和
activity
名WaitTime
:包括前一個應用 Activity
pause 的時間和新應用啟動的時間,稍微大點。
TotalTime:
表示新應用啟動的耗時,包括新程序的啟動和 Activity
的啟動,但不包括前一個應用Activity
pause的耗時(真正的啟動耗時)
ThisTime
: 表示一連串啟動 Activity
的最後一個 Activity
的啟動耗時