weak self podcast
weak self
25: 難道公司發大財了!?App Launch Time 加速面面觀
0:00
-1:09:06

25: 難道公司發大財了!?App Launch Time 加速面面觀

這集由波肥與喬喬聊聊:為什麼要加速 App Launch Time?什麼時候做?以及怎麼做?庫存已久的題目一次補完

{ 完整節目筆記 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 = 1DYLD_PRINT_STATISTICS_DETAILS = 1

  • 合併 Pods 的 plugin

  • Pods 改 statically linked (Podfile example)

  • MetricKit 的介紹文章WWDC session

  • 在用戶端測量 pre-main 所花時間的程式碼

奇技淫巧

更多 weak self

Discussion about this episode

User's avatar