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