2012-02-06 4 views
2

1つのファイルと1つのヘッダーを貼り付けることができます。私はそこに多くの情報を持っているヘッダーを生成し、私は多くのメソッドが削除されたヘッダーの明るいバージョンを作成します。ヘッダーは6k行から3k行になりました。ここで 多くのタイプを使用する場合、コンパイル時間を短縮することはできますか?

クラスは、私が同じファイルをコンパイルしようとした光ヘッダ

class SomeClass : public MACRO_FOR_KEYWORD TheBase { 
    virtual void i_dont_filter_this_out(){} 
public: 
    deque<Var*> ls; 
    inline SomeClass(){} 
    inline virtual ~SomeClass(){} 
    inline SomeClass(deque<Var*> ls_) 
    { 
     ls = ls_; 
    } 
}; 

でどのように見えるかの例であり、それは私が望んでいた7seconds ...ない結果に8secondsから行ってきました。私は非常に多くのクラスを定義していますし、方法は重要ではありませんので、私は思ってい

は多分、コンパイル時間の大半はあります。しかし、私はすべてのクラスが存在する必要があります。約280のクラスがあります。私はそれがたくさんあるとは思わない。

は、私は私のコンパイル時間を下げるために何ができますか?私は気にする必要がありますか?ファイルとリンクごとの約9秒はもう数秒です。私は何もできますが、より速いCPUを得ることはできないと思いませんか?

注:私は視覚的なスタジオを使用しています。

+0

可能性のある重複した[C++のコンパイル時間をスピードアップするために使用することができますどのような技術?](http://stackoverflow.com/questions/373142/what-techniques-can-be-used-to-speed-up-c -compilation-times)と[どのようにコンパイル時間を短縮し、Visual C++プロジェクトのリンク時間を短縮しますか? (ネイティブC++)](http://stackoverflow.com/questions/364240/how-do-you-reduce-compile-time-and-linking-time-for-visual-c-projects-nativ) –

+1

このヘッダであります自動的に生成されますか? 3k行はたくさんあるようです。 –

答えて

1

あなたの定義をエクスポートすることができます - あなたが他の場所でこのヘッダーを含めるもちろん仮定。あなたがブーストのような大きなプロジェクトや図書館を見るときは、280クラスはかなり小さいです。これらのクラスはすべて一緒に属していますか?依存関係を減らし、コンパイル時間を短縮するために、より小さなグループに分けることはできませんか?統一ビルドのようなアプローチで、軽いヘッダー(冗長宣言付き?)を好む理由は何ですか?

+0

ライトファイルは問題ではないことが判明しました。私はそれに多くの時間を費やしていない良いこと(行を削除するパスで特定の文字列を含む実際に私の大きなヘッダー)。私はいくつかのstdヘッダ(cassert、cstdio)を削除し、iとoストリームの代わりにiosfwdを使用することがもう1秒遅れていることを知っています。その奇妙なこれらのファイルはコンパイルするのに数秒かかる。これらのファイルをたくさん作業する必要があります(彼らは大きくなっています) –

+0

@ acidzombie24 ok - 軽いファイルは、維持して同期を維持するのに苦労する可能性があります。おそらくあなたはPCHファイルの使い方を再考することができますか?まだ、3KSLOC ==依存関係が簡単な場合は7秒です。 – justin

+0

私はgccも使用していますが、gccで実際にテストする必要はありません。私のビルドはちょうどどれくらい時間がかかっているのか分かりません。面白いほど十分な再構築はわずか45秒です。実際にはリンカーかもしれません。私は約1〜2秒間空白のファイルを構築しようとしました。私はデキュスク(私が必要)+ヘッダーは約3-4秒+ 2リンカー+ 1秒の体にあると思います。それはそれほど悪くない。まだ7-8秒のビルドは、私は小さなものをたくさんする必要があるときは少し迷惑です。 -edit- +1 –

関連する問題