偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):

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

https://ost.51cto.com

Launch Profiler概述

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

場(chǎng)景示例

如下代碼在頁(yè)面繪制之前的aboutToAppear生命周期函數(shù)內(nèi)執(zhí)行了耗時(shí)的計(jì)算任務(wù),導(dǎo)致應(yīng)用冷啟動(dòng)耗時(shí)長(zhǎng),文章后續(xù)將以本案例場(chǎng)景來(lái)簡(jiǎn)單介紹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++;
  }
 }
}

使用約束

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

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

首先打開(kāi)profiler,以DevEco Studio 4.0.0.400版本為例,可以通過(guò)如下三種方式打開(kāi)Profiler:

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

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

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

說(shuō)明:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

提示

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

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

想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):

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

https://ost.51cto.com

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

2021-09-13 10:23:52

工具ProfilerSQL

2017-08-21 14:40:20

IOS性能分析Instrument

2023-02-22 15:11:51

鴻蒙應(yīng)用簽名

2022-04-12 11:35:43

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

2022-04-12 12:35:02

Linux啟動(dòng)性能systemd

2021-02-22 08:29:03

KubernetesKubectl Fla應(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性能分析工具

2015-05-25 14:13:18

Yahoo MySQL性能分析工開(kāi)源

2011-04-02 10:29:20

Linux工具

2022-03-21 15:02:05

Harmonyhiperf鴻蒙

2021-04-22 09:20:20

KubernetesKubectl FlaLinux

2022-10-27 15:57:26

開(kāi)發(fā)工具鴻蒙

2021-08-09 16:39:52

工具JVM剖析
點(diǎn)贊
收藏

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