iOSAPP應(yīng)用啟動(dòng)時(shí)間查看 Pre-main時(shí)間查看

可以在Scheme 中添加環(huán)境變量DYLD_PRINT_STATISTICS

DE35C95D-A2A3-4F35-976A-FDE235775A83.png
WWDC 2016 Session 406優(yōu)化應(yīng)用程序啟動(dòng)時(shí)間詳細(xì)介紹了每個(gè)步驟以及改進(jìn)時(shí)間的提示,以下是簡(jiǎn)要的總結(jié)說明:
  • dylib loading time 動(dòng)態(tài)加載程序查找并讀取應(yīng)用程序使用的依賴動(dòng)態(tài)庫(kù)。每個(gè)庫(kù)本身都可能有依賴項(xiàng)。雖然蘋果系統(tǒng)框架的加載是高度優(yōu)化的,但加載嵌入式框架可能會(huì)很耗時(shí)。為了加快動(dòng)態(tài)庫(kù)的加載速度,蘋果建議您使用更少的動(dòng)態(tài)庫(kù),或者考慮合并它們。

建議的目標(biāo)是六個(gè)額外的(非系統(tǒng))框架。

  • Rebase/binding time 修正調(diào)整鏡像內(nèi)的指針(重新調(diào)整)和設(shè)置指向鏡像外符號(hào)的指針(綁定)。為了加快重新定位/綁定時(shí)間,我們需要更少的指針修復(fù)。
    如果有大量(大的是20000)Objective-C類、選擇器和類別的應(yīng)用程序可以增加800ms的啟動(dòng)時(shí)間。
    如果應(yīng)用程序使用C++代碼,那么使用更少的虛擬函數(shù)。
    使用Swift結(jié)構(gòu)體通常也更快。

  • ObjC setup time Objective-C運(yùn)行時(shí)需要進(jìn)行設(shè)置類、類別和選擇器注冊(cè)。我們對(duì)重新定位綁定時(shí)間所做的任何改進(jìn)也將優(yōu)化這個(gè)設(shè)置時(shí)間。
    initializer time 運(yùn)行初始化程序。如果使用了Objective-C的 +load 方法,請(qǐng)將其替換為 +initialize 方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容