Xcodeはデフォルトではビルドを並列に行ってくれません。
今日はビルドの並列設定をしてビルド時間がどのくらい短くなるか調べてみます。
ビルド時間を表示する
Xcode上にビルド時間を表示するようにします。
下コマンドを打ってからXcodeを再起動することで、真ん中上部にビルド時間が表示されるようになります。
defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
Macのコア数を確認する
次に下コマンドで自分のMacのコア数を確認しました。
system_profiler SPHardwareDataType
自分のMacはコア数は2のようです。
普通にクリーン & ビルド
普通のビルドをしてみました。
時間は327秒ほどでした。
コンパイルを並列にする
まずはコンパイルの同時実行数を2にします。
defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 2
その結果、コンパイル時間は200秒以下にまで縮みました。
タスク数を4にする
次はタスクを更に増やして4にしてみます。
コンパイル時間は193秒、タスク数2の時とほとんど変わりませんでした。
PCのコア数以上にするのは効果が薄そうです。
defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 4
タスク数を16にする
最後にタスク数16も試してみました。
結果は250秒ほどです、逆に遅くなりました。
タスク数が増える事で余計な処理が増えたのではないかと思われます。
2022/01/08 追記
CPUの使用コア数ですがInstrumentsでも設定できるようになったので調べてみました。
Instrumentsを起動したらメニューからPreferencesを選択します。
Preferences画面にCPUsがあるのでここで変更すれば使用コア数も変更可能です。
設定は即時反映されるのでコマンドと違ってXcodeの再起動は不要です。
こちらで変更した場合、コマンドでの設定は上書きされます。
逆にコマンドで変更した場合はコマンドの設定が優先されました。
その際の検証結果は下の通りです。
コア数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