

現在比較的巨大な社内C++プロジェクトをメンテナンスしておりますが、boostやtemplateメタプログラミングを駆使した仕様になっており、コンパイル時間が増大し、業務効率が著しく低下する状況に陥っています。  
ヘッダ依存性の縮小やpchの利用、その他ググれば様々なコンパイル時間短縮の方法は記載されていますが、すでに存在する巨大なプロジェクトのどこがボトルネックになっているか検討する指針として、コンパイルプロセスに対するプロファイラや統計情報を取得するオプションがあればご教示いただきたく存じます。

使用している環境は  
windows7 visual studio 2015 professional edition sp3  
です。

よろしくお願いいたします。


CC BY-SA 4.0
2018-10-12T23:49:24.390
49230
2018-10-15T03:30:33.173
30501
question
c++ visual-studio build
コンパイル時間の短縮


非公開のコンパイルオプション・リンクオプションが用意されています。

[code]

    cl.exe /Bt
    link.exe /time
    
[/code]

を使用することで所要時間を確認することができます。あくまで非公開オプションですので、今後仕様変更等の可能性を認識した上でお試しください。

* * *

いくつかおおすすめを

  * コンパイルの高速化 
    * [PCH](https://msdn.microsoft.com/ja-jp/library/szfdksca.aspx)によるヘッダーファイル解析のスキップ
    * [`/MP`オプショ](https://msdn.microsoft.com/ja-jp/library/bb385193.aspx)ンによる.cppファイルの並列コンパイル
    * [`/Zc:inline`オプション](https://msdn.microsoft.com/ja-JP/library/dn642448.aspx)によるインライン展開され不要になるデバッグシンボルの除去
  * リンクの高速化 
    * [`/INCREMENTAL`オプション](https://msdn.microsoft.com/ja-jp/library/4khtbfyf.aspx)によるインクリメンタルリンク
    * [`/LTCG:INCREMENTAL`オプション](https://msdn.microsoft.com/ja-jp/library/xbf3tbeh.aspx)によるリンク時コード生成のインクリメンタルリンク
    * [`/DEBUG:FASTLINK`オプション](https://docs.microsoft.com/en-us/cpp/build/reference/debug-generate-debug-info?view=vs-2017)によるデバッグシンボルファイルの生成高速化（[VS2015 SP1以降](https://blogs.msdn.microsoft.com/vcblog/2015/10/16/debugfastlink-for-vs2015-update-1/)）


CC BY-SA 4.0
2018-10-13T10:33:50.270
49245
2018-10-13T10:33:50.270
4236
49230
answer


もうしわけありません、アカウントの登録プロセスに失敗してしまったようで、別のID（本ID）に質問時のメールアドレスが紐づいてしまい、当該質問のアカウントにアクセスできなくなってしまいました。一般的にアカウントの統合は難しいでしょうか。。

上記の質問に関しては、いただいたコンパイルオプションからほぼすべての時間がLINKにかかっていることがわかりました。その情報を手掛かりに以下のページにたどり着き、  
<https://blogs.msdn.microsoft.com/vcblog/2013/10/29/the-visual-c-linker-best-
practices-developer-iteration/>  
32bitビルド時に64bitツールセットを利用することでリンク時間を大幅に削減することができました。（boostやtemplateというより、コードサイズ肥大化のためのメモリ不足だったようです）。


CC BY-SA 4.0
2018-10-15T03:30:33.173
49285
2018-10-15T03:30:33.173
30502
49230
answer