コンパイル時間が非常に遅くなり、デュアル コア 2GHz、2G RAM マシンでは 20 分以上かかることがあります。
これの多くは、70 以上のプロジェクトに成長したソリューションのサイズと、多数のファイルがある場合にそれ自体がボトルネックとなる VSS によるものです。(残念ながらVSSを交換することはオプションではないので、これがVSS bashに陥ることは望ましくありません)
統合プロジェクトを検討しています。また、アプリケーションの各要素の関心をより分離し、コンパイル時間を短縮するために、複数のソリューションを用意することも検討しています。物事を同期させようとすると、これは DLL 地獄になることがわかります。
他のチームがこのスケーリングの問題にどのように対処したかを知りたいです。コード ベースがクリティカル マスに達し、ステータス バーがコンパイル メッセージを配信するのを見て半日を無駄にしているとき、あなたは何をしますか。
UPDATE これはC#ソリューションであることに言及するのを怠りました。すべての C++ の提案に感謝しますが、ヘッダーについて心配する必要がなくなってから数年が経ちました。
編集:
これまでに役立った素敵な提案 (以下に他に素敵な提案がないと言っているのではなく、役立ったものだけです)
- 新しい 3 GHz ラップトップ - 管理者に文句を言うと、失われた使用率のパワーが驚異的に機能します
- コンパイル中にアンチウイルスを無効にする
- コンパイル中に VSS (実際にはネットワーク) から「切断」 - VS-VSS 統合を完全に削除し、VSS UI の使用に固執する可能性があります。
コンパイルをいじるわけではありませんが、すべてのビットが役立ちます。
Orion は、ジェネリックにも効果がある可能性があるとコメントで言及しました。私のテストでは、最小限のパフォーマンス ヒットがあるように見えますが、十分に高いとは言えません。ディスク アクティビティが原因で、コンパイル時間が一定しない場合があります。時間の制限により、私のテストには、ライブ システムに表示されるほど多くのジェネリックまたはコードが含まれていなかったため、蓄積される可能性があります。コンパイル時のパフォーマンスのためだけに、使用されるはずの場所でジェネリックを使用することを避けません
回避策
新しいソリューションでアプリケーションの新しい領域を構築し、必要に応じて最新の dll をインポートし、満足のいくものになったら、それらをより大きなソリューションに統合する方法をテストしています。
また、作業が必要な領域をカプセル化するだけの一時的なソリューションを作成し、コードを再統合した後にそれらを破棄することにより、既存のコードと同じようにすることもできます。このコードを再統合するのにかかる時間と、開発中に Rip Van Winkle のような迅速な再コンパイルを経験しないことで得られる時間とを比較検討する必要があります。