2009-07-10 4 views
1

私がプロジェクトをビルドするとき、ビルド時間がリリースされると時間がかかる。時間を結ぶリリースでリリースビルド時間がVS2008で長くかかる

は、次のとおりです。時間をリンクデバッグ中130secs

は、次のとおりです。同じプロジェクトの15secs。

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

なぜそれが可能なのか分かりませんか?

+0

増分リンクまたは機能レベルのリンク設定が原因である可能性がありますか? – sharptooth

+0

あなたの説明から、リリースのような音がずっと短くなっていますか? –

+0

あなたの件名と質問には同意できません。あなたの質問では、デバッグビルドが長い(130秒)、リリースビルドが短い(15秒)としていると述べています。どちらですか? –

答えて

3

リリースビルドはおそらく最適化設定のために遅くなります。通常、デバッグビルドでは、最適化が設定されていません。つまり、生成されたオブジェクトファイルは多かれ少なかれ出力に直接コピーされます。一方、リリースビルドでは、LTCGが有効になっているか、他のリンカーの最適化が適用されている可能性があります。通常、リンクはCPUにバインドされており、通常は1つのスレッドでしか実行されないため、一種の遅い傾向があります。アウトプットが大きければ大きいほど、これは悪くなります。

+1

+1「リンクは通常CPUにバインドされています」というコメントを除いて+1。多くの場合、リンクはディスクのI/O境界です。 –

0

私の経験では、リンク時にほとんどの時間がデバッグ情報の生成に費やされています。デバッグ情報なしでリンクしようとすると、リンク時間が途切れてしまいます(私が作業しているプロジェクトは約80秒から約10秒になります)。そうでなければ、それは別のものです。デバッグビルドでは、誤ったインクリメンタルリンクによって長いリンク時間が発生する可能性があります。私はリンク時間が1分から5分に上がるのを見た。デバッグ情報を保持したままリンク時間を短縮するには、すべてのコンパイルユニットのデバッグ情報をマージする必要があるため、コンパイルユニットをできるだけ少なくしてください。私は、1つのcppファイルにこれらのcppファイルを含めることによって、複数のcppファイルを1つのコンパイル単位に結合することでそれを行います。私は私の頭の上から考えることができ

よろしく、

Sebastiaan

0

唯一のことは、あなたが唯一のリリースモードで実行するようにFxCopのが設定されていることです。 FxCopは、有効になっているとビルドプロセスの一部として実行されるため、大きなプロジェクトでは大きなビルドの時間差が発生します。

解決策に関する詳細を教えてください。たとえば

  • どのような言語ですか?
  • どのようなプロジェクトですか?
  • プロジェクト内のファイル数は?
  • コマンドラインから再作成しますか?
+0

- これはC++プロジェクト - このプロジェクトでは、私はopenSceneGraphとqtを一緒に使用しています。 - 200以上のファイルがあります。 - qtファイルがコンパイル時に再生されています。リンクするにはレプロがありません。 – ufukgun

関連する問題