weak self
weak self
一三、波肥
25: 難道公司發大財了!?App Launch Time 加速面面觀
1 hour 9 minutes Posted Feb 16, 2020 at 3:00 pm.
0:00
1:09:07
Download MP3
Show notes


這集由波肥與喬喬聊聊:

  • 為什麼要加速 App Launch Time?
  • 什麼時候做?
  • 以及怎麼做?
  • 庫存已久的題目一次補完

{ 完整節目筆記 https://weakself.dev/episodes/25 }

什麼時候做 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


--
Hosting provided by SoundOn