サブプロジェクトに分割されたソリューションのコンパイルをビジュアルスタジオがどのように処理するのか、プロジェクトが1つだけのソリューション(たとえば200クラスなどの同じ量のクラス)と比較して疑問に思っています。どちらがより速くコンパイルされますか (または両方とも同じでしょうか)?
2 に答える
ソリューション分割 uf をサブプロジェクトにコンパイルすることで、より高速になると思います。他のプロジェクトのいずれかを変更しなかった場合、変更されていないサブプロジェクトのコンパイル済みの dll を使用できます。すべてのクラスが 1 つのプロジェクトに配置されている場合、ビルドするたびにプロジェクト全体をコンパイルする必要があります...
しかし、私の意見では、構築速度よりも重要なのは、ソリューションをサブプロジェクトに分割することのアーキテクチャ上の利点です。スタンドアロン プログラムまたは別のソリューションのライブラリとして使用できる複数のコンポーネントがある場合、プロジェクトを分割することは完全に理にかなっています。これは、ソリューションをサブプロジェクトに分割するための私のアプローチです! コンパイル速度は、これのプラスの副作用です。
ビルド速度を最適化するには、このリンクをチェックしてください: http://blogs.microsoft.co.il/blogs/arik/archive/2011/05/17/speed-up-visual-studio-builds.aspx
ソリューションを複数のプロジェクトに分割することで得られるもう 1 つの利点は、これらのプロジェクト間に依存関係がある場合でも、コンパイラが並列にコンパイルできることです。したがって、全体としては高速になると思います。
一般的に答えるのは難しいです - VS のバージョンを含む多くの要因に依存します。プリコンパイル済みヘッダーは、共有される場合と共有されない場合があります。プログラム全体の最適化は、実際にはリンクユニット全体の最適化です。DLL のリンクは実行時に行われるため、Visual Studio のビルド時間などにはカウントされません。