1

プロジェクトをビルドするとき、ビルド時間はリリースだと非常に時間がかかります。

リリース時、リンク時間:130秒

デバッグでは、リンク時間は同じプロジェクトで 15 秒です。

コンパイルには違いはありませんが、リンクには大きな違いがあります。

なぜそれができるのか知っていますか?

4

3 に答える 3

3

最適化設定が原因で、リリース ビルドが遅くなる可能性があります。通常、デバッグ ビルドの場合、最適化を設定しません。これは、生成されたオブジェクト ファイルが多かれ少なかれ出力に直接コピーされることを意味します。一方、リリース ビルドの場合は、LTCGが有効になっている場合や、他のリンカーの最適化が適用される場合があります。通常、リンクは CPU バウンドであり、通常は単一のスレッドでのみ実行されるため、速度が遅くなる傾向があります。出力が大きいほど、これも悪化するようです。

于 2009-07-10T08:58:38.777 に答える
0

私の経験では、リンク中にほとんどの時間がデバッグ情報の生成に費やされています。デバッグ情報なしでリンクしようとすると、リンク時間が大幅に短縮されます (私が取り組んでいるプロジェクトでは、約 80 秒から約 10 秒に短縮されます)。そうでなければ、それは別のものです。デバッグ ビルドでは、不適切なインクリメンタル リンクが原因でリンク時間が長くなる場合もあります。リンク時間が 1 分から 5 分に増加するのを見ました。デバッグ情報を保持しながらリンク時間を短縮したい場合は、すべてのコンパイル ユニットのデバッグ情報をマージする必要があるため、コンパイル ユニットをできるだけ少なくしてください。1 つの cpp ファイルにそれらの cpp ファイルを含めることで、複数の cpp ファイルを 1 つのコンパイル ユニットに結合することで、これを行います。

よろしく、

セバスチャン

于 2009-07-10T08:59:21.257 に答える
0

頭の中で思いつく唯一のことは、FxCop がリリース モードでのみ実行されるように設定されていることです。FxCop が有効になっている場合、ビルド プロセスの一部として実行されるため、大規模なプロジェクトではビルド時間に大きな差が生じる可能性があります。

あなたのソリューションについてもう少し情報を提供してもらえますか? 例えば

  • 何語?
  • プロジェクトの種類は?
  • プロジェクト内のファイル数?
  • コマンドラインから再現しますか?
于 2009-07-10T17:00:22.813 に答える