Xcode
Swift
Xcode9

Xcode9でビルド時間を短縮する

More than 1 year has passed since last update.

Xcode9から、BuildSystem を変更することで、ビルド時間を短縮することができます。

Build Systemってなんだ

Whats New in Xcode (Xcode9に、次のように書いてあります

New in Xcode 9 – Preview of a new build system written in Swift. Currently, This system is optional but it will become the default in a future version of Xcode

  • Added a preview of a new build system written in Swift.
  • Provides higher reliability.
  • Catches many project configuration problems.
  • Improves overall build-system performance. Note, build system performance does not include the compilers, linkers, and other tools used by the build system.

To opt into the new build system for a project or workspace, choose File > Project Settings or File > Workspace Settings, and then choose New Build System (Preview) for the Build System type. For notes on compatibility with existing projects, see the Xcode Release Notes.

簡単にまとめると、

  • 現在はオプションとして選択すると使えるようになる(将来的にはデフォルトになる)
  • Swiftで書かれたビルドシステム
  • 高い信頼性、プロジェクト構成の問題のキャッチ
  • ビルドシステム全体のパフォーマンス向上

のようです。早くなりそうな感じがしますね!

試した環境

  • Xcode 9.1
  • MacbookPro 15インチ late2016 (TouchBar付、2.9GHz、4コア)

ビルド時間の計測方法については以下が参考になります
- Swiftのメソッド毎のコンパイル時間を計測してビルド時間を短縮する

あとは、PCが4コアなので以下のコマンドをターミナルで叩いています。

$ defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 4

Workspaceの設定を変更する

Xcodeの[File]->[WorkSpace Settings...] を開きます

スクリーンショット 2017-11-13 14.06.13.png

Build Systemを変更する

[Shared Workspace Settings:]の項目のプルダウンで、 NewBuildSystem(Preview)に変更します。

スクリーンショット 2017-11-13 14.06.21.png

スクリーンショット 2017-11-13 14.29.31.png

あとはいつもどおりビルドするだけです。
ビルド中、画面上部の表示がこんな感じになります

スクリーンショット 2017-11-13 14.38.37.png

(Preview)とあるので、今後仕様や性能が変わる可能性はありそうです。

また、この設定は各Project毎に行う必要があります。

どれくらい早くなるのか

手元に巨大なProjectがなかったので、ファイル180程度のもの+CocoaPodsのビルドありで試しましたが、
BuildTimeAnylizerを用いて計測したところ

  • 前: 174秒
  • 後: 143秒

となりました。なので、およそ20%ほど早くなったようです。(何度か計測して平均...まではやっていません)
大きいProjectほど恩恵は得られそうですね。

参考