線上收聽與節目筆記
這集由波肥與喬喬聊聊:
- 為什麼要加速 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 所花時間的程式碼
奇技淫巧
- 抖音的重新排序 binary 方案
- FB 的 binary layout optimize
- 關於此技術的其它相關評價
更多 weak self
- 聽眾信箱 [email protected]
- 官網 https://weakself.dev
- 主持人 一三、波肥、喬喬
- Twitter @weak_self
- 提問箱
- 贊助 weak self