Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building...Please, wait

Vadym
April 03, 2020

Building...Please, wait

Vadym

April 03, 2020
Tweet

More Decks by Vadym

Other Decks in Programming

Transcript

  1. AGENDA AGENDA ▸ Build configuration, Xcode target, Xcode scheme ▸

    Как llbuild строит build graph ▸ Как генерация кода влияет на build time ▸ Как померять время билда 2
  2. LLBUILD ЧТО ТАКОЕ LLBUILD? ▸ Новая билд сисистема от Apple

    ▸ Вызывает компилятор, линковщик и прочих ребят 9
  3. struct B { let c: C } struct A {

    let c: C } struct C { let some: String } A.swift C.swift B.swift 11
  4. struct B { let c: C } struct A {

    let c: C } struct C { let some: String } A.swift C.swift B.swift struct Hot { let d: String } 12
  5. struct B { let c: String = L.Buttons.finish struct A

    { let c: String = L.Buttons.finish } internal enum L { internal enum Buttons { /// FINISH internal static let finish = L.tr("Localizable", “active_workout.buttons.finish") } A.swift localization.generated.swift B.swift 15
  6. LLBUILD ЧТО НАМ ДАДУТ РАЗНЫЕ ТАРГЕТЫ? ▸ Разные generated.swift файлы

    ▸ llbuild умеет компилировать разные таргеты параллельно 25
  7. 28

  8. 35

  9. WMO VS INCREMENTAL WHOLE MODULE OPTIMIZATION ▸ Быстрее, если собирать

    clean build ▸ Ломает инкрементальную сборку ▸ Компилятор делает оптимизации 40
  10. 42

  11. ЗАВИСИМОСТИ ЧТО С НИМИ ДЕЛАТЬ? ▸ Можно хранить уже собранные

    ▸ Для Carthage уже есть готовые инструменты ▸ Для CocoaPods есть сторонние плагины 46
  12. SUMMARY О ЧЕМ ГОВОРИЛИ? ▸ Xcode target, Xcode scheme, Build

    configuration ▸ Как мерять время билда ▸ Несколько лайфхаков как ускорить билд ▸ XcodeGen ▸ Bazel 47
  13. THATS ALL CREDITS ▸ https://github.com/PaulTaykalo/xcode-build-times-rendering ▸ https://swift.org/blog/new-diagnostic-arch-overview/ ▸ https://github.com/apple/swift/blob/master/docs/ CompilerPerformance.md#diagnostic-options

    ▸ https://developer.apple.com/videos/play/wwdc2018/408/ ▸ https://github.com/yonaskolb/XcodeGen ▸ https://swift.org/blog/whole-module-optimizations/ 48