私はいくつかのプロジェクトのビルドの改善に取り組んでいます。私はビルド時間を大幅に改善しました。私は現在、ボトルネックがより微妙だと思うところです。ボトルネックを特定するためのビルド時間の測定
ビルドでは、GNUスタイルのmakefileが使用されます。私は一連の依存関係ファイル(.d
)を生成し、makefileにインクルードします。そうでなければ、あらかじめコンパイルされたヘッダーやその他のキャッシング機構はありません。
32コアのsparc ultraでは、並列に16スレッド実行して約95秒かかります。ビルドが実行されている間、空き時間は約80%、カーネル時間は8〜10%です。私は/ tmpにコードを入れましたが、コンパイラサポートファイルのほとんどはNFSマウントされており、パフォーマンスのボトルネックが発生する可能性があります。
&これらの種類の問題を追跡するツールはありますか?
プリコンパイル済みヘッダーを使用していない理由は何ですか?私の経験では、それらは劇的に全プロセスをスピードアップすることができます。 – Voo
私の場合、リンクには約2分かかります。それだけで。完全なコンパイルは5分以上かかることがあります。完全最適化ビルドを実行すると、すべてのモジュールが1つに統合され、完全なIPOが可能になります。私は通常、これらのビルドのうちの5〜10個を、異なるアーキテクチャに対して同時に実行します。 (モジュールがマージされてからマルチコアをコンパイルするのは唯一の方法です)。 – Mysticial
@Voo - それは議事録の上にあります。 –