iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

Compilation Mode とは?

Xcode で設定できる Compilation Mode はProject のビルド方法を、速度を最適化する必要があるか、それらの最適化をスキップする必要があるかを設定することができます。簡潔に言い換えると、変更されたファイルのみをコンパイルするか、全体をコンパイルするかを選択することができるとも表現できます。

github.com

Compilation Mode の種類

Compilation Mode には主に下記の2つが存在します。

Primary-file

primary-file モードでは、driver は実行する必要のある作業を frontend processes に分割し、部分的な結果を出力し、全ての frontend が終了した時にそれらの結果をマージします。このモードには下記の2つのサブモードが存在します。

  • single-file sub-mode

    • ファイルごとに1つの frontend job を実行し、各 job には1つの primary があります。
  • batch sub-mode

    • CPU ごとに1つの frontend job を実行し、モジュールのファイルと同じサイズの "batch" を primary として識別します。

Xcode 内で Incremental を選択した場合は、こちらのモードが適用されます。

whole-module

whole-module optimization (WMO) mode では、driver は、モジュール全体に対して1つの frontend job を実行します。その frontend は、モジュールないの全てのファイルを一回に読み取り、それらを全て一度にコンパイルします。

最後に

DriverFrontend jobs とはなんぞやという方は下記の記事がわかりやすくまとまっているのでお勧めです。

qiita.com

参考

その他の記事

yamato8010.hatenablog.com

yamato8010.hatenablog.com

yamato8010.hatenablog.com