加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • Part 03●??應(yīng)用實(shí)例?●
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

五分鐘技術(shù)趣談 | 基于MacroBenchmark的性能測(cè)試量化指標(biāo)方案

2023/10/09
3933
閱讀需 10 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

作者:孫仁偉,單位:中國(guó)移動(dòng)智慧家庭運(yùn)營(yíng)中心

基于Benchmark的性能測(cè)試量化指標(biāo)方案是一種用于評(píng)估和量化系統(tǒng)性能的方法。通過使用Benchmark測(cè)試工具,該方案旨在提供可靠的性能數(shù)據(jù),并使用具體的指標(biāo)來衡量系統(tǒng)在各個(gè)方面的表現(xiàn)。本文將介紹基于Google MacroBenchmark的性能量化指標(biāo)測(cè)試的工程配置、測(cè)試流程、核心指標(biāo)和應(yīng)用案例,幫助Android 開發(fā)者更好地評(píng)估和比較App的性能。

Part 01●??背景?

隨著App業(yè)務(wù)不斷增長(zhǎng)和功能的迭代,代碼量快速增加,導(dǎo)致應(yīng)用結(jié)構(gòu)復(fù)雜度提高。同時(shí),在App開發(fā)過程中,與競(jìng)爭(zhēng)對(duì)手的App進(jìn)行性能比較也是必要的。為了避免代碼增長(zhǎng)和功能迭代帶來的性能下降,我們需要一套技術(shù)方案來監(jiān)控App版本的性能,以指導(dǎo)開發(fā)人員及時(shí)進(jìn)行代碼重構(gòu)。

Part 02●??方案說明?

Benchmark,即基準(zhǔn)測(cè)試,是檢查和監(jiān)控應(yīng)用性能的一種方式。通過對(duì)每個(gè)移動(dòng)App版本的迭代運(yùn)行基準(zhǔn)測(cè)試,可以幫助分析和調(diào)試性能問題,并確保迭代的更改不會(huì)引起性能下降。

以下是一常見的移動(dòng)App的benchmark方法和工具:

1.Startup Time Benchmark:評(píng)估應(yīng)用程序的啟動(dòng)時(shí)間,即從用戶點(diǎn)擊應(yīng)用圖標(biāo)到應(yīng)用程序完全加載并可交互的時(shí)間??梢允褂酶鞣N工具和方法來測(cè)量啟動(dòng)時(shí)間,如使用應(yīng)用性能監(jiān)測(cè)工具或手動(dòng)計(jì)時(shí)。

2.Responsiveness Benchmark:評(píng)估應(yīng)用程序?qū)τ脩舨僮鞯捻憫?yīng)速度,包括用戶界面的流暢度和操作的延遲??梢允褂眯阅鼙O(jiān)測(cè)工具記錄用戶操作和應(yīng)用程序響應(yīng)時(shí)間,或者進(jìn)行用戶體驗(yàn)測(cè)試來評(píng)估應(yīng)用的響應(yīng)性能。

3.Memory Usage Benchmark:評(píng)估應(yīng)用程序在運(yùn)行過程中使用的內(nèi)存量??梢允褂脙?nèi)存分析工具來監(jiān)測(cè)應(yīng)用程序的內(nèi)存使用情況,并進(jìn)行比較和分析。

4.Battery Consumption Benchmark:評(píng)估應(yīng)用程序?qū)υO(shè)備電池的消耗情況??梢允褂秒姵叵谋O(jiān)測(cè)工具來測(cè)量應(yīng)用程序在不同使用情景下的電池消耗量,并進(jìn)行比較和分析。

5.Network Performance Benchmark:評(píng)估應(yīng)用程序在使用網(wǎng)絡(luò)功能時(shí)的性能和速度??梢允褂镁W(wǎng)絡(luò)性能監(jiān)測(cè)工具來模擬不同網(wǎng)絡(luò)條件下的應(yīng)用性能,并進(jìn)行測(cè)試和比較。

針對(duì)Startup Time Benchmark和Responsiveness Benchmark,Google提供了Macrobenchmark庫(kù),該庫(kù)主要用于評(píng)估Android App整體性能的基準(zhǔn)測(cè)試。其旨在模擬真實(shí)世界的使用情景,通過測(cè)試用例以涵蓋各種應(yīng)用使用過程中交互操作,以綜合評(píng)估應(yīng)用的性能和響應(yīng)能力。

2.1 Macrobenchmark

2.1.1 設(shè)置Macrobenchmark

1. 打開應(yīng)用Application工程,在 Android Studio 的 Project 面板中右鍵點(diǎn)擊項(xiàng)目或模塊,然后依次點(diǎn)擊 New > Module。

2. 從Templates窗格中選擇 Benchmark。

3. 自定義目標(biāo)應(yīng)用(要進(jìn)行基準(zhǔn)測(cè)試的應(yīng)用),以及新的Macrobenchmark模塊的軟件包和模塊名稱。

4. 點(diǎn)擊Finish,從而創(chuàng)建Macrobenchmark Module。

2.1.2 創(chuàng)建Macrobenchmark類

在Macrobenchmark,我們根據(jù)業(yè)務(wù)自身情況,創(chuàng)建所需的性能指標(biāo)Benchmark測(cè)試用例。測(cè)試用例可以基于Macrobenchmark 庫(kù)中的`MacrobenchmarkRule` JUnit4規(guī)則所含的API實(shí)現(xiàn)。

比如我們現(xiàn)在需要對(duì)App應(yīng)用啟動(dòng)時(shí)間進(jìn)行監(jiān)控。則可以在Macrobenchmark Module編寫一個(gè)測(cè)試用例類,在測(cè)試用例類中編寫測(cè)試用例方案,如測(cè)量5次打開應(yīng)用時(shí)間。

創(chuàng)建startup測(cè)試用例,該用例基于MacrobenchmarkRule.measureRepated。

其中各參數(shù):

packageName:App的包名;

metrics:測(cè)量度量。此處我們選擇 StartupTimeMetric,標(biāo)識(shí)測(cè)量啟動(dòng)時(shí)長(zhǎng);

iterations:重復(fù)次數(shù)。表示該項(xiàng)用例的測(cè)試次數(shù),可以通過多次測(cè)量取均值的方式,避免單次測(cè)量的偏差影響;

setupBlock:用例前置操作。;

最后的 {} :用例內(nèi)容。此處我們執(zhí)行 startActivityAndWait,表示啟動(dòng)App并等待啟動(dòng)完成,App首幀顯示。

2.1.3 運(yùn)行基準(zhǔn)

在Android Studio中運(yùn)行測(cè)試,以衡量應(yīng)用在設(shè)備上的性能??梢韵袷褂脺y(cè)試類或方法旁邊的邊線操作運(yùn)行任何其他 `@Test` 一樣運(yùn)行基準(zhǔn),如下圖所示。

也可以通過`gradle`命令,從命令行運(yùn)行Gradle模塊中的所有基準(zhǔn):

2.1.4 基準(zhǔn)結(jié)果

基準(zhǔn)運(yùn)行成功后,指標(biāo)會(huì)直接顯示在Android Studio中,還會(huì)以JSON文件形式輸出以供持續(xù)集成環(huán)境使用。

每次衡量的迭代過程均會(huì)捕獲單獨(dú)的系統(tǒng)跟蹤文件。點(diǎn)擊Test Results窗格中的其中一個(gè)鏈接,可以打開這些結(jié)果跟蹤文件,如下圖所示。即平均啟動(dòng)時(shí)長(zhǎng)為748.1ms。

跟蹤文件加載完成后,Android Studio會(huì)提示您選擇要分析的進(jìn)程。系統(tǒng)會(huì)預(yù)先填充目標(biāo)應(yīng)用進(jìn)程:

跟蹤文件加載完成后,Studio將在CPU性能剖析器工具中顯示結(jié)果:

Part 03●??應(yīng)用實(shí)例?

在實(shí)驗(yàn)工程中,在Application.onCreate中增加了200ms睡眠。

運(yùn)行實(shí)驗(yàn)工程,構(gòu)建App,運(yùn)行App,運(yùn)行Macrobenchmark。在CPU性能剖析器工具中可以看到主線程在app.onCreate方法執(zhí)行時(shí)耗時(shí)達(dá)223.12ms。

通過分析CPU性能剖析器工具 的示圖,可以判斷app.onCreate 時(shí),主線程存在約200ms異常時(shí)延。再閱讀相關(guān)代碼,可以查出該異常部分的睡眠邏輯。

將該異常睡眠邏輯移除,從新運(yùn)行實(shí)驗(yàn)工程,構(gòu)建App,運(yùn)行App,運(yùn)行Macrobenchmark。

在CPU性能CPU性能剖析器工具中可以看到主線程在app.onCreate方法耗時(shí)約為22.01ms,時(shí)延正常,方法執(zhí)行過程中只執(zhí)行了相關(guān)調(diào)用方法,說明問題得到了修復(fù)。

通過以上案例,我們可以看出通過Macrobenchmark + CPU性能剖析器工具, 我們可以對(duì)應(yīng)用特定場(chǎng)景進(jìn)行時(shí)延分析,并對(duì)新增時(shí)延進(jìn)行有效歸因,從而能針對(duì)性的進(jìn)行優(yōu)化處理。

參考文獻(xiàn)

[1] 基準(zhǔn)化分析:https://developer.android.com/topic/performance/benchmarking/benchmarking-overview?hl=zh-cn.

[2]?使用Macrobenchmark 測(cè)量用戶啟動(dòng)好卡頓:https://www.youtube.com/watch?v=0adLO2VRJtc.

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
AD73311ARSZ-REEL 1 Rochester Electronics LLC SPECIALTY TELECOM CIRCUIT, PDSO20, SSOP-20
$9.29 查看
KSZ9897RTXI-TR 1 Microchip Technology Inc IC ETHERNET SWITCH 7PORT 128TQFP

ECAD模型

下載ECAD模型
$12.98 查看
DP83848IVV/NOPB 1 National Semiconductor Corporation IC DATACOM, ETHERNET TRANSCEIVER, PQFP48, 7 X 7 MM, GREEN, LQFP-48, Network Interface
$4.95 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

移動(dòng)Labs是中國(guó)移動(dòng)的社交化新媒體平臺(tái),是面向外部行業(yè)及產(chǎn)業(yè)鏈合作伙伴的信息發(fā)布、業(yè)務(wù)發(fā)展和產(chǎn)業(yè)推進(jìn)門戶。