多くのクラスがあると、クラスごとに1つの* .hと1つの* .cppファイルを使用すると、コンパイル時間が大幅に増加することがわかりました。非として*の.cppファイルに定義cpp翻訳単位の数を減らすのがいいですか?
- :だから私は、次のトリックを思い付いた
;(はい、私はブーストを使用して)私はすでにプリコンパイル済みヘッダーとインクリメンタルリンクを使用していますが、まだコンパイル時間が非常に長いです-compilable
- 定義された* .CXXファイルをコンパイルとして は、アプリケーション モジュールごとに1 * .CXXファイルを追加して、その中にこのモジュールのすべての*の.cppファイルをインクルード。
だからではなく、私は唯一の8翻訳単位になってしまった100+翻訳単位の。コンパイル時間は4-5倍短くなりました。
すべての* .cppファイルを手動でインクルードする必要があるという欠点があります(ただし、リンカがあなたに思い出させるものを含むのを忘れた場合はメンテナンスの悪夢ではありません)。このスキームでは、例えば
など実装に移動/に行きそこで問題は、本当に唯一の真の方法をCPPの翻訳単位の多くを持っているのですか?私のトリックを知られているパターン、または私は何かが不足している? ありがとう!私はそれがそうでない場合は行うことができなかった最適化を行うだけでなく、多くのメモリを節約するようにコンパイラーに役立ちますので、あなたはビデオゲームで何を見てきた
と呼ばれます。Visual Studioは、機能レベルのリンクをサポートしています。しかし、Unix/Linuxにはまだ関係があります。 – MSalters
機能レベルのリンクは関数または変数だけを除外しますか? – sharptooth