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

weak self podcast

線上收聽與節目筆記

這集由波肥與喬喬聊聊:

  • 為什麼要加速 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


weak self podcast logo

weak self podcast

集結弱弱的我,也可以組成強大的社群。三個在 iOS 開發圈打滾的台灣工程師,專為 Apple & iOS 開發者而製作的 Podcast。主持人一三波肥喬喬。內容涵蓋了 iOS 與 Apple 開發圈的新知討論、踩坑經驗、人物採訪、社群活動、職場生活。

回首頁聽眾朋友怎麼說?weak self 歷史

線上收聽

可使用 OvercastListen NotesGoogle Podcasts 網站。

訂閱方式

weak self 支援任何 podcast 播放軟體,只要訂閱我們的 RSS 網址即可。

Listen on Apple Podcasts Listen on Google Podcasts Listen on Overcast Listen on Pocket Casts Listen on Spotify Listen in Castro

贊助 weak self

謝謝,請見說明