しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Xcodeビルドを並列にしてみる

Xcodeはデフォルトではビルドを並列に行ってくれません。
今日はビルドの並列設定をしてビルド時間がどのくらい短くなるか調べてみます。

ビルド時間を表示する

Xcode上にビルド時間を表示するようにします。
下コマンドを打ってからXcodeを再起動することで、真ん中上部にビルド時間が表示されるようになります。

defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

f:id:llcc:20160116132634p:plain

Macのコア数を確認する

次に下コマンドで自分のMacのコア数を確認しました。

system_profiler SPHardwareDataType

自分のMacはコア数は2のようです。

f:id:llcc:20160116134409p:plain

普通にクリーン & ビルド

普通のビルドをしてみました。
時間は327秒ほどでした。

f:id:llcc:20160116134508p:plain

コンパイルを並列にする

まずはコンパイルの同時実行数を2にします。

defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 2

その結果、コンパイル時間は200秒以下にまで縮みました。

f:id:llcc:20160116134440p:plain

タスク数を4にする

次はタスクを更に増やして4にしてみます。
コンパイル時間は193秒、タスク数2の時とほとんど変わりませんでした。
PCのコア数以上にするのは効果が薄そうです。

defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 4

f:id:llcc:20160116134729p:plain

タスク数を16にする

最後にタスク数16も試してみました。
結果は250秒ほどです、逆に遅くなりました。
タスク数が増える事で余計な処理が増えたのではないかと思われます。

f:id:llcc:20160116134850p:plain

2022/01/08 追記

CPUの使用コア数ですがInstrumentsでも設定できるようになったので調べてみました。

Instrumentsを起動したらメニューからPreferencesを選択します。

f:id:llcc:20220108141606p:plain

Preferences画面にCPUsがあるのでここで変更すれば使用コア数も変更可能です。
設定は即時反映されるのでコマンドと違ってXcodeの再起動は不要です。

f:id:llcc:20220108141621p:plain

こちらで変更した場合、コマンドでの設定は上書きされます。
逆にコマンドで変更した場合はコマンドの設定が優先されました。

その際の検証結果は下の通りです。
コア数1の時は少し違いがあったのですがそれ以外は同じような数値でした。

Instrumentsで使用コア数を1に変更…474秒、431秒 Instrumentsで使用コア数を8に変更…104秒、104秒 Instrumentsで使用コア数を16に変更…82.165秒、82.339秒、86.131秒 コマンドで使用コア数を1に変更…268.112秒, 278.980秒 コマンドで使用コア数を8に変更…106.913秒, 97.185秒 コマンドで使用コア数を16に変更…97.756秒, 88.100秒

Instrumentsの方が見やすかったので今後はこちらを使おうと思います。

参考URL

Xcodeで並列ビルドを行う方法 - Qiita
Swiftのメソッド毎のコンパイル時間を計測してビルド時間を短縮する - Qiita