Android 效能測試實踐(三)Cpu

2021-07-02 17:15:32 字數 3741 閱讀 7402

cpu篇

關於android 的cpu佔用率需要注意以下三種情況:

1.空閒狀態下的應用cpu消耗情況 簡單說這種情況呢就是說被測應用在系統資源非常空閒的情況下的佔用率,比如只開乙個被測應用

2.中等規格狀態下的應用cpu消耗情況 簡單說這種情況就是後台已經有幾個應用在執行已經並且消耗了系統的一些資源的情況下進行測試。

3.滿規格狀態下的應用cpu消耗情況 這個就不要說了,你們懂得!

資料採集方案:

這裡可以看到所有程序的cpu佔用率:

大家看第乙個應用cpu佔用率68%,這個過程是在使用者(user)中花61%的時間,並在核心空間(kernel)花費7.1%的時間。

如果你想篩選出你自己的應用的話可以用下面這一段:

2.使用top命令:

進入adb shell

可檢視占用cpu最高的前10個程式(-t 顯示程序名稱,-s 按指定行排序,-n 在退出前重新整理幾次,-d 重新整理間隔,-m 顯示最大數量)

如果你想篩選出你自己的應用的話可以用下面這一段:

adb shell top -n 1| grep packagename
拿到這些資料怎麼用

1,你可以從**裡面獲取:

(dumpsys)

adb shell  dumpsys  cpuinfo
public

static

string

getcpu

(string

packagename

)throws

ioexception

bufferedreaderin=

newbufferedreader

(new

inputstreamreader

(proc

.getinputstream

()));

stringbuffer

stringbuffer

=new

stringbuffer

();string

line

=null

;while

((line=in

.readline

())!=

null

)string

str1

=stringbuffer

.tostring

();string

str2

=str1

.substring

(str1

.indexof

(packagename

),str1

.indexof

(packagename

)+28

);str3

=str2

.substring(18

,23);}

catch

(interruptedexceptione)

finally

catch

(exceptione2)

}return

str3;}

}

(top)

public

static

double

cpu(

string

packagename

)throws

ioexception

bufferedreaderin=

newbufferedreader

(new

inputstreamreader

(proc

.getinputstream

()));

stringbuffer

stringbuffer

=new

stringbuffer

();string

line

=null

;while

((line=in

.readline

())!=

null

)string

str1

=stringbuffer

.tostring

();string

str3

=str1

.substring

(str1

.indexof

(packagename

)-43

,str1

.indexof

(packagename

));string

cpu=

str3

.substring(0

,4);cpu

=cpu

.trim

();cpu

=double

.parsedouble

(cpu);}

catch

(interruptedexceptione)

finally

catch

(exceptione2)

}}catch

(exception

stringindexoutofbound***ception

)return

cpu;

}

2,直接 adb shell cat進去proc/cpuinfo/下面:

public

string

getcpuinfo()

;string

arrayofstring

;try

str2

=localbufferedreader

.readline

();arrayofstring

=str2

.split

("\\s+"

);cpuinfo[1

]+=arrayofstring[2

];localbufferedreader

.close

();}

catch

(ioexceptione)

return

cpuinfo

;}

取完你可以這麼用》:

配合一些場景去採集資料:

這樣可以看到每個步驟消耗的資源情況

然後彙總資料分析(最好多取幾次求平均值):

android效能測試systrace

一 簡介 systrace 是 android4.1 引入的一套用於做效能分析的工具。基於 linux 核心的 ftrace 機制 用於跟蹤 linux 核心的函式呼叫 可以輸出各個執行緒當前的函式呼叫狀態。它可幫助開發者收集 android 關鍵子系統 如 su ceflinger windowm...

Android測試驅動開發實踐

在android應用開發中,相信很少有人在堅持先由設計人員做完整的概要設計 詳細設計,然後交給程式設計師進行編碼實現了。通常是在有乙個大體框架的情況下,就開始進行具體編碼開發了。在這種情形下,開發速度可以有很大的提高,但是最終 質量卻不可避免的降低了。如何能既保持開發速度,同時又能保證開發質量呢?相...

Android效能測試 記憶體篇

android效能測試 記憶體篇 目的 保證合理使用記憶體 使用範圍 新增頁面 老頁面中有新增內容 頁面中有展示 有非同步執行緒跳轉 有頁面跳轉 頁面中有列表展示 頁面中有輸入框 測試項及測試標準 maxmemoryheap allocation memory值小於maxmemoryheap的60 ...