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コア)
ビルド時間の計測方法については以下が参考になります
あとは、PCが4コアなので以下のコマンドをターミナルで叩いています。
$ defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 4
Workspaceの設定を変更する
Xcodeの[File]->[WorkSpace Settings...] を開きます
Build Systemを変更する
[Shared Workspace Settings:]の項目のプルダウンで、 **NewBuildSystem(Preview)**に変更します。
あとはいつもどおりビルドするだけです。
ビルド中、画面上部の表示がこんな感じになります
(Preview)とあるので、今後仕様や性能が変わる可能性はありそうです。
また、この設定は各Project毎に行う必要があります。
どれくらい早くなるのか
手元に巨大なProjectがなかったので、ファイル180程度のもの+CocoaPodsのビルドありで試しましたが、
BuildTimeAnylizerを用いて計測したところ
- 前: 174秒
- 後: 143秒
となりました。なので、およそ20%ほど早くなったようです。(何度か計測して平均...まではやっていません)
大きいProjectほど恩恵は得られそうですね。