{ 完整節目筆記 https://weakself.dev/episodes/25 }
這集由波肥與喬喬聊聊:
為什麼要加速 App Launch Time?
什麼時候做?
以及怎麼做?
庫存已久的題目一次補完
什麼時候做 App Launch Time 加速?
公司有在賺錢的時候
App Launch 的三個階段
Pre-main: Loading (MachO + dylib) / Rebase & Binding / ObjC Setup / Initializer
Main: App 的入口
Post-main
Pre-main 提到的笑話
Swift 專案裡的 main 去了哪?
由
@UIApplication
做完全部工作了寫自己的 main.swift (程式碼)
各階段加速的不同策略
Pre-main Loading: 減少 App size;減少 dylib 數目 (merge pods); 或者變成 statically linked pods Rebase/Binding: iOS 13 幫你用 dyld3 做好 cache 了 Objc setup: 少點 ObjC code;少點 Category Initializer: 盡量用
+initialize
取代+load
Post-main: 少做事,多 lazy,盡量平行化處理
掃瞄沒用到 ObjC selector 的 script
測量,別猜!
Xcode scheme 新增 env variable 可取得 pre-main 各時間:
DYLD_PRINT_STATISTICS = 1
或DYLD_PRINT_STATISTICS_DETAILS = 1
合併 Pods 的 plugin
Pods 改 statically linked (Podfile example)
MetricKit 的介紹文章 與 WWDC session
在用戶端測量 pre-main 所花時間的程式碼
奇技淫巧
關於此技術的其它相關評價
更多 weak self
Twitter @weak_self
Share this post