Instruments App Launch的用法
XCode11之后,Instrument提供了App Launch工具,可以用于查看App的啟動(dòng)過程,從而可以針對(duì)性的對(duì)啟動(dòng)速度進(jìn)行優(yōu)化
使用介紹
首先啟動(dòng)Instruments

然后選擇App Launch

打開之后界面大概如下所示,點(diǎn)擊左上角的紅色按鈕就會(huì)開始App的啟動(dòng)分析。

當(dāng)啟動(dòng)App之后會(huì)運(yùn)行5秒,這個(gè)時(shí)間是默認(rèn)的,可以自己進(jìn)行更改。然后自動(dòng)停止App,并開始進(jìn)行分析,完成之后就會(huì)將結(jié)果顯示出來。如下圖所示
這里會(huì)顯示一個(gè)啟動(dòng)的簡(jiǎn)要情況,右側(cè)默認(rèn)會(huì)顯示該過程的CPU使用情況。下方會(huì)顯示線程追蹤情況:線程運(yùn)行的時(shí)長、被阻塞的時(shí)長、中斷的時(shí)長等。

這時(shí),選擇你的App,在process的位置會(huì)有展開符,單擊之后可以選擇顯示的內(nèi)容。選擇Time Profile,右側(cè)的顯示會(huì)更改為各個(gè)階段的耗時(shí)情況。
右側(cè)會(huì)將啟動(dòng)過程劃分為幾個(gè)階段:進(jìn)程創(chuàng)建、系統(tǒng)初始化、運(yùn)行時(shí)的初始化、UIKit初始化、啟動(dòng)、第一幀渲染。并分別顯示各階段的耗時(shí)情況。
下面會(huì)顯示整個(gè)過程的詳細(xì)信息??梢郧袚Q查看角度。分別有:Event:Context Switch Point (查看整個(gè)啟動(dòng)過程中上下文切換的位置) 、Profile(顯示整個(gè)啟動(dòng)過程中的方法調(diào)用棧及方法耗時(shí)) 、App Life Cycle (啟動(dòng)過程中的各個(gè)階段的耗時(shí)) 、Sample
如下圖

一般來說,系統(tǒng)初始化階段和UIKit初始化階段做優(yōu)化的空間較小。重點(diǎn)關(guān)注的階段可能多在啟動(dòng)和第一幀渲染的階段。
所以,可以通過三擊某個(gè)階段,來只查看該階段的相關(guān)信息。如圖,三擊Launching階段,下方的部分選擇Profile,就可以只查看在Launching階段,所有的方法調(diào)用棧和方法耗時(shí)情況

除此之外,還可以查看在啟動(dòng)過程中的所有的線程情況。
點(diǎn)擊app前面的展開符號(hào),會(huì)展開顯示啟動(dòng)過程中App的所有線程,點(diǎn)擊線程的展開符號(hào)可以選擇顯示線程的狀態(tài)。
線程的狀態(tài)會(huì)通過顏色進(jìn)行標(biāo)注。灰色的表示當(dāng)前線程被阻塞。紅色的表示當(dāng)前線程可以運(yùn)行,有了CPU資源就可以立即運(yùn)行。橙色的表示線程被中斷,CPU去執(zhí)行其他優(yōu)先級(jí)更高的線程。藍(lán)色的表示正在運(yùn)行
如下圖所示。
