VS ビルドの最適化

場合によっては、Incredibuild の構成またはプロジェクトの設定の特定の局面を微調整することで、Visual Studio プロジェクトのビルド速度をさらに最適化できる可能性があります。

プロジェクト設定を最適化する

プロジェクト設定に次のような変更を加えることでビルド時間 (特に Incredibuild を使用する場合) を短縮できます。

  • ブラウズ情報を無効にする: ブラウズ情報を作成すると、ファイルのコンパイルに時間がかかり、ネットワークに負荷がかかるだけでなく、ビルドの最後に .BSC ファイルの作成ステップが追加されます。Visual Studio のこの機能を通常使用しない場合は、ブラウズ情報の作成を無効にするか、またはシンプルにAgent Settings > Visual Studio Builds > Browse Information で Incredibuild の Browse Information Creation オプション {Generate .BSC (Source Browser database) file} をNever に設定してください。

  • インクリメンタルコンパイルと最小リビルド (/Gi/Gmコンパイラフラグ) を無効にする - Incredibuild の性能を若干向上させるため、この 2 つのオプションを無効にします。

PDB ファイル数を制限する

この機能は Visual Studio 2012 以降でご利用になれます。Visual Studio 2011 ではレジストリの [PdbForwardingMode] フラグを「0」に設定することが推奨されています。

Incredibuild は分散処理を行うために、実行中の Agent に対して個別に PDB ファイルを作成します。つまり、標準的な Visual C++ のビルドとは違って、中間フォルダに PDB ファイルがいくつも作成されるためリンクに時間がかかる可能性があります。

PDB ファイル数を制限するとリンクを高速化できますが、同じプロジェクトのファイルを同時にコンパイルできる Agent の数が制限されます。そのため、このオプションはビルドに比較的多くのプロジェクト ファイルが含まれる場合のみ使用することをお勧めします。

PDBファイルの数を制限するには、[Agent Settings]>[Visual Studio Builds] > [Advanced] と進み、制限を設定します。

ローカルマシンでリンク ステップを並列実行しない

開始マシンでリンク ステップを並列実行できるようにすると (マルチコア パッケージを割り当てられたマルチコア / CPU を搭載した PC の場合)、ビルドのパフォーマンスが向上することがあります。ただし、リンク ステップの消費メモリが大きかったり、複数のリンク ステップに対応できるだけの物理メモリが搭載されていない場合、ページ ファイルが過剰にスワッピングされてビルドが遅くなる可能性があります。

リンクステップの並列化を設定するには、[Agent Settings] >[Visual Studio Builds] > [General] と進み、CPU/コア使用率を指定します。

特定のプロジェクトをローカルで実行する

高負荷のタスクをリモート Agent に分散すると Initiator マシンの I/O 使用率が上がり、ビルドに時間がかかる場合があります。このような高負荷のタスクが含まれるプロジェクトをローカルマシンでのみ実行することでビルド時間を短縮できます。

> プロジェクトをローカルでのみ実行する手順

  1. Visual Studio でプロジェクトを右クリックし、[プロパティ] > [構成プロパティ] > [C/C++] > [プロセッサの定義] の順に選択します。

  2. [プロセッサの定義] セクションに「IB_RunLocal」と追加します。

Initiator マシンに特定のファイルを同期する

この設定は「VC compiler = true」として定義されているプロセスに関連するものです。例えば、Incredibuild で OBJ ファイルを返すように定義されている Microsoft コンパイラや Intel コンパイラなどがこれに当てはまります。ほかのファイルを同期したい場合は、対象ファイルを明示的に定義することができます。

> Initiator マシンと同期するファイルを定義する手順

  1. Coordinator マシンで Incredibuild のトレイアイコンを右クリックして [Coordinator Monitor] を選択します。

  2. 一覧表示された Agent の中から Initiator Agent を右クリックして [Set Registry Value...] を選択します。

  3. [Value Category] が [Builder] になっていることを確認します。

  4. [Name] に「AdditionalOutputMasks」と入力します。

  5. [Data] 欄に次の文字列のどちらか一方を入力します。「*.txt」(.txt ファイルをすべて同期) または *.txt;*.xml (.txt と .xml ファイルをすべて同期)。

  6. [OK] をクリックすると Initiator Agent にレジストリ値が追加されます。