自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

DevEco Studio Profiler工具分析應(yīng)用啟動性能

系統(tǒng) OpenHarmony
Launch任務(wù)窗口還集成了Time、CPU、Frame場景分析任務(wù)的功能,方便開發(fā)者在分析啟動耗時的過程中同步對比同一時段的其他資源占用情況。

想了解更多關(guān)于開源的內(nèi)容,請訪問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

Launch Profiler概述

DevEco Studio內(nèi)置Profiler分析調(diào)優(yōu)工具,其中Launch主要用于分析應(yīng)用或服務(wù)的啟動耗時,分析啟動周期各階段的耗時情況、核心線程的運(yùn)行情況等,協(xié)助開發(fā)者識別啟動緩慢的原因。此外,Launch任務(wù)窗口還集成了Time、CPU、Frame場景分析任務(wù)的功能,方便開發(fā)者在分析啟動耗時的過程中同步對比同一時段的其他資源占用情況。

場景示例

如下代碼在頁面繪制之前的aboutToAppear生命周期函數(shù)內(nèi)執(zhí)行了耗時的計算任務(wù),導(dǎo)致應(yīng)用冷啟動耗時長,文章后續(xù)將以本案例場景來簡單介紹Frame Profiler的使用。

@Entry
@Component
struct Index {
 @State private text: string = "hello world";
 private count: number = 0;

 aboutToAppear() {
  this.computeTask();
 }

 build() {
  Column({space: 10}) {
   Text(this.text).fontSize(50)
  }
  .width('100%')
  .height('100%')
  .padding(10)
 }

 computeTask() {
  this.count = 0;
  while (this.count < 10000000) {
   this.count++;
  }
 }
}

使用約束

  • 已通過USB連接設(shè)備
  • 僅支持OpenHarmony API 10及以上版本的Stage工程
  • 不支持對命令拉起的release應(yīng)用進(jìn)行Launch分析,也不可對其進(jìn)行Launch錄制。

如何使用Launch Profiler錄制數(shù)據(jù)

首先打開profiler,以DevEco Studio 4.0.0.400版本為例,可以通過如下三種方式打開Profiler:

  • 在DevEco Studio頂部菜單欄中選擇“View -> Tool Windows -> Profiler”。
  • 在DevEco Studio底部工具欄中單擊“Profiler”。
  • 按“Double Shift”或者“Crtl+Shift+A”打開搜索功能,搜索“Profiler”。

創(chuàng)建Launch任務(wù)并啟動錄制。

  • 打開Profiler性能分析器。
  • 選擇待分析的設(shè)備與應(yīng)用進(jìn)程。
  • 選擇Launch工具。
  • 點(diǎn)擊create Session按鈕創(chuàng)建啟動分析任務(wù)。
  • 準(zhǔn)備好調(diào)試環(huán)境后,點(diǎn)擊開始錄制啟動數(shù)據(jù),再次點(diǎn)擊結(jié)束錄制。

說明:

針對調(diào)測應(yīng)用的當(dāng)前運(yùn)行情況,Profiler對其做如下處理:

  • 如選擇的是已安裝但未啟動的應(yīng)用,在啟動該分析任務(wù)時,會自動拉起應(yīng)用,進(jìn)行數(shù)據(jù)錄制,結(jié)束錄制后可正常進(jìn)入解析階段。
  • 如選擇的是正在運(yùn)行的應(yīng)用,在啟動該分析任務(wù)時,會先將應(yīng)用關(guān)停,再自動拉起應(yīng)用,進(jìn)行數(shù)據(jù)錄制,結(jié)束錄制后可正常進(jìn)入解析階段。

在任務(wù)錄制(recording)及分析(analyzing)的過程中,請不要主動斷開應(yīng)用或者設(shè)備,否則可能導(dǎo)致分析任務(wù)異常失敗。

如何使用Launch Profiler分析數(shù)據(jù)

“Launch”泳道顯示啟動生命周期各階段的耗時分布情況,如下圖:

  • Process Creating:進(jìn)程創(chuàng)建階段。該階段主要是AppSpawn fork子進(jìn)程,AMS創(chuàng)建ability。
  • Application Launching:應(yīng)用程序啟動階段。該階段主要是資源加載、Application相關(guān)對象的創(chuàng)建與初始化、依賴模塊的加載等。
  • UI Ability Launching:UIAbiity啟動階段。該階段主要是資源加載、Ability相關(guān)對象的創(chuàng)建與初始化、依賴模塊的加載等。
  • UI Ability OnForeground:UIAbility置為前臺階段。該階段主要是加載應(yīng)用首頁的源碼和so以及創(chuàng)建應(yīng)用首頁內(nèi)各個組件。
  • First Frame - App Phase:應(yīng)用側(cè)首幀。在FlushTask中把之前加載的組件上樹并布局。
  • First Frame - Render Phase:渲染側(cè)首幀。render_service接受下一幀應(yīng)用來的首頁布局信息,并繪制渲染
  • EntryAbility:渲染完成,首頁顯示。

展開“Launch”泳道還包含多個與進(jìn)程啟動有關(guān)聯(lián)的子泳道:

  • “Static Initialization”子泳道:展示啟動過程中各靜態(tài)資源庫的加載耗時。
  • “Running CPU Cores”子泳道:展示啟動過程中的主線程具體運(yùn)行在哪個CPU核心。
  • “l(fā)e.startup_demo”子泳道:展示啟動過程的主線程的狀態(tài)和Trace數(shù)據(jù)。

針對應(yīng)用冷啟動問題的性能分析,有以下兩種方式可以選擇,一種是分析主線程的Trace數(shù)據(jù),另一種則是分析采樣得到的函數(shù)熱點(diǎn)。

分析主線程的Trace數(shù)據(jù)

從“Launch”泳道可以很明顯的看出UI Ability OnForeground階段的耗時占據(jù)應(yīng)用冷啟動過程的大部分時間,如下圖:

  • 單擊“Launch”泳道上的UI Ability OnForeground階段,在下方的“Details”詳情面板中,可查看到所選階段的耗時統(tǒng)計情況。
  • 展開UI Ability OnForeground統(tǒng)計信息折疊表,可以看到各函數(shù)的具體耗時信息。
  • 根據(jù)Duration找到耗時最長的函數(shù)aboutToAppear。
  • 單擊。

按鈕,可直接跳轉(zhuǎn)至主線程的打點(diǎn)任務(wù)中,查看相關(guān)Trace數(shù)據(jù),如下圖

可以發(fā)現(xiàn)aboutToAppear函數(shù)的耗時占據(jù)UI Ability OnForeground階段的大部分時間,結(jié)合應(yīng)用代碼將aboutToAppear函數(shù)中的耗時計算任務(wù)以異步延遲的方式處理后,可以得到如下“Launch”泳道。

上述對比可以發(fā)現(xiàn)將耗時的計算任務(wù)以異步延遲的方式處理后可以顯著縮短UI Ability OnForeground階段的耗時,提升應(yīng)用的冷啟動速度。

分析采樣得到的函數(shù)熱點(diǎn)

我們也可以分析采樣得到的函數(shù)熱點(diǎn)直觀的顯示應(yīng)用冷啟動過程中具體函數(shù)的耗時,如下圖:

  • 單擊“Launch”泳道上的UI Ability OnForeground階段。
  • 選擇“ArkTS Callstack”泳道,其會基于時間軸展示CPU使用率和狀態(tài)的變化,以及當(dāng)前調(diào)用棧名稱和調(diào)用類型。
  • 下方“Details”詳情面板中查看到這段時間內(nèi)的函數(shù)熱點(diǎn),其會以Top-Down形式的樹狀列表進(jìn)行展示。很明顯aboutToAppear函數(shù)中的computeTask函數(shù)耗時最多,占整個階段的81%。

此外,點(diǎn)擊Flame Chart按鈕打開火焰圖可以更直觀的看出熱點(diǎn)函數(shù)的耗時情況,如下圖:

根據(jù)上述步驟,使用異步延遲處理后的函數(shù)熱點(diǎn)如下,可以發(fā)現(xiàn)aboutToAppear函數(shù)的執(zhí)行耗時只占整個UI Ability OnForeground階段的5.8%。

上述方法開發(fā)者可以選擇自己習(xí)慣的方式去查看。一般來說,如果所選的時間段里,函數(shù)棧比較復(fù)雜的話,用火焰圖找熱點(diǎn)會更高效。當(dāng)鎖定到某個熱點(diǎn)函數(shù)之后,只需要雙擊函數(shù)結(jié)點(diǎn),Profiler工具就會為您自動打開對應(yīng)的源文件,并聚焦到相應(yīng)代碼行。上述前提是這個源文件須是屬于當(dāng)前工程,并且是在DevEco Studio內(nèi)完成編譯的。

在使用Launch Profiler工具獲取啟動各階段的耗時信息時,需要應(yīng)用結(jié)合實(shí)際開發(fā)需要修改。無特殊情況下,應(yīng)該避免在應(yīng)用啟動的生命周期函數(shù)內(nèi)執(zhí)行耗時操作,若需要可以使用異步延遲處理或者拋到其他線程處理。

提示

Profiler為Launch分析數(shù)據(jù)提供了全局搜索能力。單擊分析窗口左上角的,根據(jù)界面提示信息輸入需要搜索的項(xiàng)目,可獲取到相關(guān)內(nèi)容的定位,使用搜索框的<、>按鍵可依次顯示返回結(jié)果的詳細(xì)內(nèi)容。

在任務(wù)分析窗口,可以通過“Ctrl+鼠標(biāo)滾輪”縮放時間軸,通過“Shift+鼠標(biāo)滾輪”左右移動時間軸。

想了解更多關(guān)于開源的內(nèi)容,請訪問:

51CTO 開源基礎(chǔ)軟件社區(qū)

https://ost.51cto.com

責(zé)任編輯:jianghua 來源: 51CTO 開源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2021-09-13 10:23:52

工具ProfilerSQL

2017-08-21 14:40:20

IOS性能分析Instrument

2022-04-12 12:35:02

Linux啟動性能systemd

2021-02-22 08:29:03

KubernetesKubectl Fla應(yīng)用

2022-04-12 11:35:43

IDE工具OHOS應(yīng)用鴻蒙

2023-02-22 15:11:51

鴻蒙應(yīng)用簽名

2009-11-23 16:17:02

Visual Stud

2022-09-28 14:13:03

Linux工具

2022-01-26 15:07:04

bytrace工具OpenHarmon

2021-10-23 06:44:02

性能分析Profiler復(fù)雜度分析

2017-06-12 18:48:00

Android性能分析工具

2011-04-02 10:29:20

Linux工具

2015-05-25 14:13:18

Yahoo MySQL性能分析工開源

2022-03-21 15:02:05

Harmonyhiperf鴻蒙

2021-04-22 09:20:20

KubernetesKubectl FlaLinux

2021-08-09 16:39:52

工具JVM剖析

2022-10-27 15:57:26

開發(fā)工具鴻蒙
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號