Visual Studio と多数のファイルに対するコンパイルのパフォーマンスの問題
質問
現在のソリューション/プロジェクトには複数のクラスが 1 つのファイルに結合されていますが、これは VS のコンパイル時間が遅いために行われたと言われています。
これは確認済みの問題と解決策ですか?
VS2008 Team システムを使用しているので、これらを分解できますか?クラスを別のファイルに分割しても良好なパフォーマンスを実現した人は他にいますか?
解決
VB.Net IDEチームで働いており、すべてを1つのファイルに入れると、VSの実行が遅くなりますが、速くなりません。 VB.Netは、さまざまなファイルのクラスで正常に機能します。
これが違いを生むのは、信じられないほど遅いハードドライブと、物理ディスクの非常に異なる部分にあるファイルがある場合だけです(その結果、シーク命令がますます長くなります)。一般に、これは問題ではないはずです。VB.NetIDEの場合、これは最初の起動時にのみ問題になります。これらのタイプの問題を排除するのに役立つキャッシュのレイヤーがいくつかあります。
コマンドラインコンパイラが動作するのにかかる生の時間のみを考慮すると、このアプローチに対する最小限の利点を発見できる可能性があります 。私見、より重要な数字は、Visual Studioの応答性とVisual Studioの相対的なビルド時間です。 非常に長いファイルがあると、VSの応答性が低下します(これは、クラスを1つのファイルに入れると最終的に発生します)。
他のヒント
ハードウェアはどのようなものですか?
VSの大きなボトルネックは、小さなファイルの読み込みと書き込みが必要なことです。
高速のハードドライブまたは2台でパフォーマンスの負荷を改善できます!
VB.NETではなくC#を使用していますが、コンパイラのパフォーマンスの問題に遭遇したことはありません。これはある種の時期尚早な最適化のようです。ビルドサーバーがアプリケーションをビルドするのに必要な時間は気にしません。ビルド時のパフォーマンスのために明快さを犠牲にしないでください。
あなたのチームがソリューションの設計を検討するように説得したいと思うかもしれません。すべてのプロジェクトに1つの巨大なソリューションを配置することは最適ではないかもしれません。ビルド時間が本当に問題になる場合は、可能であれば解決策を論理的な部分に分解することで解決します。
多くのクラスを単一のファイルにグループ化すると、通常のプロジェクトのビルドパフォーマンスが大幅に向上するとは思わない。それらをより多くのファイルに分割しても安全です(クラスごとに1つが標準です)。
私が遭遇した1つの例外は、「Webサイト」です。プロジェクト。科学的なデータはありませんが、これらのファイルはファイル数が増えるにつれて遅くなるようです 。これを修正するには、「Webアプリケーション」に変換します。プロジェクト。
ソリューション内のプロジェクトが多すぎるとVSが遅くなることも知られていますが、それは問題のようには聞こえません。
これは確認済みの問題であり、確認済みの解決策です。今年の Tech Ed では、VS2010 ではこの問題は発生しないと発表されており、ベータ版をダウンロードして試すことができます。