1. ホーム
  2. c#

[解決済み] Visual Studio 2005 のコンパイル時間が非常に遅い

2022-06-28 02:32:05

質問

デュアル コア 2GHz、2GRAM のマシンで、コンパイル時間が非常に遅く、20 分以上かかることがあります。

この原因の多くは、70 以上のプロジェクトに成長した私たちのソリューションのサイズと、多くのファイルを持っているときにそれ自体がボトルネックとなる VSS にあります。(VSS をスワップアウトすることは残念ながらオプションではないので、これを VSS バッシングに発展させたくはありません)。

私たちはプロジェクトの合併を検討しています。 また、アプリケーションの各要素について、より大きな関心の分離とより迅速なコンパイル時間を達成するために、複数のソリューションを持つことも検討しています。これは、同期を維持しようとするため、DLL 地獄になることが目に見えています。

コードベースが臨界量に達して、コンパイルメッセージを配信するステータス バーを見ながら半日を無駄に過ごすことになったとき、どうするのでしょうか。

アップデイト

これはC#の解決策であることを言及するのを怠っていました。すべての C++ の提案に感謝しますが、ヘッダーについて心配する必要があったのは数年前のことです。

EDITです。

これまで役に立った素敵な提案(以下に他の素敵な提案がないとは言いません。)

  • 新しい 3GHz ラップトップ - 管理者に愚痴をこぼすとき、失われた使用率のパワーは驚異的に作用します。
  • コンパイル時にアンチウィルスを無効にする
  • コンパイル中に VSS (実際にはネットワーク) から「切断」する - VS-VSS の統合を完全に削除し、VSS UI の使用に固執するように仕向けるかもしれません。

まだコンパイル中にリップ スノートすることはできませんが、少しずつでも役に立ちます。

Orion はコメントで、ジェネリックが関係している可能性があることを言及しました。私のテストでは、最小限のパフォーマンス ヒットがあるように見えますが、確信が持てるほど高くはありません - コンパイル時間は、ディスクの動作により一貫していません。時間的な制約から、私のテストでは、実際のシステムで表示されるほど多くのジェネリックやコードを含んでいないので、それが蓄積されるかもしれません。私は、コンパイル時のパフォーマンスのために、ジェネリックを使用することを避けることはしません。

回避策

私たちは、アプリケーションの新しい領域を新しいソリューションで構築し、必要に応じて最新の dll をインポートし、満足できるようになったらそれらをより大きなソリューションに統合するという方法をテストしています。

また、作業する必要がある領域をカプセル化する一時的なソリューションを作成し、コードを再統合した後にそれらを捨てることによって、既存のコードに同じことを行うかもしれません。このコードを再統合するためにかかる時間と、開発中に迅速な再コンパイルでリップヴァンウィンクルのような経験をしないことによって得られる時間とを比較検討する必要があります。

どのように解決するのですか?

Chromium.org チームは、いくつかの選択肢を挙げています。 ビルドを高速化する (この時点でページの約半分)。

高速化された順に

  • Microsoft ホットフィックスをインストールする 935225 .
  • Microsoft ホットフィックスをインストールする 947315 .
  • 真のマルチコア プロセッサーを使用します (たとえば、Intel Core Duo 2。Pentium 4 HT ではありません)。
  • 3 つの並列ビルドを使用します。Visual Studio 2005 では、このオプションは ツール > オプション... > プロジェクトとソリューション > ビルドと実行 > プロジェクトの並行ビルドの最大数 .
  • .ilk, .pdb, .cc, .h ファイルに対するアンチウィルス ソフトウェアを無効にして、以下のファイルに対するウィルス チェックのみを行います。 を変更します。 . ソースのあるディレクトリをスキャンしないようにする。バカなことはしないでください。
  • Chromium コードを 2 台目のハードドライブに保存してビルドします。ビルドのスピードは上がりませんが、少なくとも gclient sync やビルドを行うときに、コンピューターが応答し続けるようになります。
  • 定期的にハード ドライブのデフラグを行います。
  • 仮想メモリを無効にします。