1. 程式人生 > 其它 >python--安卓端APP:效能測試(cpu使用)

python--安卓端APP:效能測試(cpu使用)

1、獲取應用包名,ex:

adb shell dumpsys window | findstr mCurrentFocus
mCurrentFocus=Window{b1af8e1 u0 com.xw.samlpe.bubbleseekbar/com.xw.samlpe.bubbleseekbar.MainAbilityShellActivity}

2、獲取應用的pid,所有執行緒的tid值,獲得具體執行緒的狀態----獲得執行緒執行時間processCPUTime(即utime,stime,cutime,cstime的和)

1 adb shell ps -ef |findstr com.xw.samlpe.bubbleseekbar #獲取pid

2 adb shell ps -T -p pid值 #所有執行緒的tid

3 adb shell cat /proc/pid值/task/tid值/stat  #具體執行緒的狀態

備註:proc/pid/task/tid/stat檔案介紹如下:

1 C:\Users\dWX1068106>adb shell cat /proc/2275/task/2471/stat
2 2471 (Thread-3) S 626 972 0 0 -1 1077952576 11015 0 0 0 364 207 0 0 10 -10 39 0 534300 6705520640 40954 18446744073709551615 1 1 0 0 0 0 4612 4097 1073775864 0 0 0 -1 3 0 0 0 0 0 0 0 0 0 0 0 0 0
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

每個引數意思為:
引數 解釋
pid=2741 程序(包括輕量級程序,即執行緒)號
com=(Thread-3)          應用程式或命令的名

utime=364 該任務在使用者態執行的時間,單位為jiffies(一般地等於10ms),下標為13
stime=207 該任務在核心態執行的時間,單位為jiffies,下標為14
cutime=0 累計的該任務的所有的waited-for程序曾經在使用者態執行的時間,單位為jiffies
cstime=0 累計的該任務的所有的waited-for程序曾經在核心態執行的時間,單位為jiffies

3、獲得/proc/stat中 cpu執行時間 totalCpuTime即(CPU指標:user,nice, system, idle, iowait, irq, softirq的和)

4、totalCpuTime,processCPUTime均取0.3s的差值,來判斷cpu_rate(我們需要的cpu使用率),

cpu = 100 * (processCpuTime差值) / (totalCpuTime差值)
       if cpu < 0:
           cpu = 0
       elif cpu > 100:
           cpu = 100
       return cpu