iOS 基于PGO優(yōu)化啟動(dòng)時(shí)間

作者 | 我是來(lái)學(xué)習(xí)的別拉我干
來(lái)源 | 掘金,點(diǎn)擊閱讀原文查看作者更多文章
前言
本文不再詳細(xì)闡述iOS啟動(dòng)流程,以及二進(jìn)制重排的詳細(xì)原理。只介紹一種相當(dāng)簡(jiǎn)單有效的優(yōu)化啟動(dòng)時(shí)間的方法。這就是 Profile Guided Optimization,可以大幅度降低page In 次數(shù)。
附蘋(píng)果文檔(非常古老的一個(gè)文檔)
https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/xcode_profile_guided_optimization/pgo-tasks/pgo-tasks.html#//apple_ref/doc/uid/TP40014459-CH2-SW4
二進(jìn)制重排 ,Page In 相關(guān)概念可以參考一下抖音二進(jìn)制重排方案 附鏈接
https://mp.weixin.qq.com/s/Drmmx5JtjG3UtTFksL6Q8Q
PGO配置
PGO是蘋(píng)果官方提供的工具,具體使用方法是點(diǎn)擊xcode工具欄 Product -> Perform Action -> Generate Optimization Profile 按xcode提示操作即可

點(diǎn)擊Run后待項(xiàng)目啟動(dòng)完成后,點(diǎn)擊xcode的停止按鈕,項(xiàng)目中會(huì)自動(dòng)添加一個(gè)OptimizationProfiles文件夾。在build setting中搜索 Use optimization Profile,將release配置為yes,需要注意的是,蘋(píng)果文檔中說(shuō)明,PGO只支持release環(huán)境。
查看項(xiàng)目Page In次數(shù)
配置PGO完成后可以用instruments查看項(xiàng)目pageIn次數(shù)。效果相當(dāng)可觀。具體操作步驟 點(diǎn)擊xcode工具欄Open Developer Tool -> instruments -> System trace

點(diǎn)擊紅色按鈕等待項(xiàng)目完全啟動(dòng)完畢,再點(diǎn)擊暫停按鈕,得到分析數(shù)據(jù),搜索main Thread,如圖

每次啟動(dòng)得到的Page In次數(shù)并不會(huì)完全相同,這取決于app占用的物理內(nèi)存是否已經(jīng)被覆蓋。殺死app之后,app的物理內(nèi)存有可能還在。
