この投稿へのコメントをコピーしないように、このトピックを書くことにしました。 ここで私たちのソリューションを説明します
変更前:
完全なアセンブリ(クリーン)には約4.5時間かかりました
増分アセンブリ(連続)には約30分かかりました。
変更後:
完全な組み立て-約40分。
増分アセンブリ-2-3分
入力データ:
鉄(専用ビルダーマシン):Intel Xeon E5430 @ 2.66Hz、4 GB RAM
開発環境:Windows XP、2003、7、2008。VisualStudio 6、2005、2008、2012。
アセンブリには、約1000個のC ++プロジェクトが含まれます。〜3MLN LOC
仕組み:
優先度順にコンパイルする必要のあるプロジェクトのリストを含むファイルがありました。
ビルドスクリプトはこのファイルを処理し、各プロジェクトのコンパイルを順番に開始しました。
したがって、アセンブリ時間は、プロジェクトの数に比例して月ごとに増加し、ある時点で、私たちにカテゴリー的に合うのをやめました。
変更点:
- ディスクをSSDに置き換える(WDから適切なHDDディスクが存在するまで)
- IncrediBuildをビルドスクリプトに統合します。 Incredibuildを4台のコンピューターにインストールしました。 (すでにビルドスクリプトがある場合の些細な変更)
- 規定の依存関係を持つ1つの巨大なソリューションをコンパイルします。 ソリューションは、プロジェクトのリストと各プロジェクトの依存関係ファイルに基づいて自動的に生成されます
- コンパイル速度とは関係ありませんが、svn 7(クライアントのみ)に切り替えることで、ビルドプロセスのもう1つの大幅な高速化が実現しました。 これは特にIncrに影響します。 更新を巨大な作業コピーにする必要がある場合のアセンブリ。 SVN 7では、時間が10分から1分に短縮されました。
すべての変更がアセンブリを2〜3回加速したように感じます。
私たちにとって最も難しい部分は、各プロジェクトの依存関係ファイルを作成することでした。 ここでは、その方法を説明しません。 これが誰にとっても面白いかどうかはわかりません。
誰かが私たちの経験を役立ててくれることを願っています。