[解決済み] Visual Studio 2005 のコンパイル時間が非常に遅い
質問
デュアル コア 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 やビルドを行うときに、コンピューターが応答し続けるようになります。
- 定期的にハード ドライブのデフラグを行います。
- 仮想メモリを無効にします。
関連
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】スレッド終了またはアプリケーションの要求により、I/O操作が中断されました。
-
[解決済み] Visual Studioのデバッグ/ロードが非常に遅い
-
[解決済み] Windows 8でVisual Studioを常にAdministratorとして実行するように強制することはできますか?
-
[解決済み] Visual Studioで、既存のディレクトリツリーをプロジェクトに追加するにはどうすればよいですか?
-
[解決済み] Visual Studio の .suo と .user ファイルをソースコントロールに追加する必要がありますか?
-
[解決済み] Visual Studio CodeとVisual Studioの違いは何ですか?
-
[解決済み] Visual Studioの出力ウィンドウに書き込む
-
[解決済み】Visual Studioでコードを自動フォーマットする方法とは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】パディングが無効で、削除できない?
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み] EntityTypeにキーが定義されていないエラー
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する