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

Building...Please, wait

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for Vadym Vadym
April 03, 2020

Building...Please, wait

Avatar for Vadym

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