1. 程式人生 > 其它 >App啟動過慢,有哪些因素?

App啟動過慢,有哪些因素?

首先,需要清楚App的啟動過程

1、解析 Info.plist

·載入相關資訊,例如閃屏

·沙箱建立、許可權檢查

2、Mach-O載入

·如果是胖二進位制檔案,尋找適合當前CPU類別的部分

·載入所有依賴的Mach-O檔案(遞迴呼叫Mach-O載入的方法)

·定位內部、外部指標引用,例如字串、函式等

·執行宣告為__attribute__(constructor)的C函式

·載入類擴充套件(category)中的方法

·C++靜態物件載入、呼叫OC的+load函式

3、程式執行

·呼叫main()函式

·呼叫UIApplicationMain()函式

·呼叫applicationWillFinishLaunching

然後,影響啟動效能的因素有:

1、main()函式之前耗時的影響因素

·動態庫載入越多,啟動越慢

·OC類越多,啟動越慢

·C的constructor函式越多,啟動越慢

·C++靜態物件越多,啟動越慢

·OC的+load越多,啟動越慢

2、main()函式之後耗時的影響因素

·執行main()函式的耗時

·執行applicationWillFinishLaunching的耗時

·rootViewController及其childViewController的載入、view及其subviews的載入

借鑑方案:

針對今日頭條這個App我們可以優化的點如下:

·純程式碼方法而不是storyboard載入首頁UI

·對didFinishLaunching裡面的函式考慮是否可以延遲載入或者懶載入,需要與各個業務方共同check,對於一些已經下線的業務,刪除冗餘程式碼

·對於一些與UI展示無關的業務,如微博認證過期檢查、圖片最大快取空間設定等做延遲載入。對實現了+load()方法的類進行分析,儘量將load裡的程式碼延後呼叫

·上面統計資料顯示展示feed的導航控制器頁面(NewsListViewController)比較耗時,對於viewDidLoad以及viewWillAppear方法中儘量去嘗試少做、晚做、不做。