2011-03-09 10 views
14

私のプロジェクトのコンパイル時間はかなり長いので、できるだけこれを減らしたいと思います。しかし、今、私は自分のプロジェクトをブラウズして、純粋な直感でコンパイル重いものを取り除こうとしています。コンパイルのプロファイリングと最適化

私のコンパイル時に、私のコンパイル時間の大半を占めるものを特定するのに役立つ情報を提供することができます。

私はVisual Studioで "ビルドのタイミング"を有効にしようとしましたが、コンパイラが実行しているさまざまなタスクのタイミングよりも多くの情報が得られません。

ラインやファイルタイミングなどのより低いレベルでコンパイルをプロファイリングする方法はありますか?

+1

いいえ。これは基本的なO(n)の複雑さを持ち、コードを別々のDLLにスピンオフすることでnを減らします。テンプレートは決して安価ではありません。 –

+3

私はテンプレートが安くないことを知っています。しかしながら、どのテンプレートインスタンス化が時間を費やしているかを知ることは有益であろう。いくつかのブーストライブラリが80%の時間を費やしています。この場合、実装の変更を検討するかもしれません。 – ronag

+1

大きな質問ですが、タイミングツールをコンパイルしたいと思っています。 – Inverse

答えて

0

できるだけコードを別々のファイルに分割してください。 は、私は、Visual Studioを使用していないので、私は、彼らがこれを処理する方法を正確に知っているが、ここではなぜ、どのように http://www.cplusplus.com/forum/articles/10627/

1

私が提供するコンパイル・プロファイリングのアドバイスを持っていないための良いガイドですありません。ヘッダファイル内

  • 利用前方宣言可能な限りあなただけ使用する必要がある場合

    C++で

    、クラスが順に宣言することができます。しかし、ここではコンパイル時間を短縮するためのヒントのカップルです (すべてのオブジェクトポインタが同じ サイズであるためコンパイラが気にするものです)、そのクラスへのポインタ型です。 (ソース:http://en.wikipedia.org/wiki/Forward_declaration

  • また、PIMPLイディオムを使用すると、コンパイラは、あなたが変更した部分のみを再コンパイルできるようにすることで、あなたに大いに役立つでしょう。 http://en.wikipedia.org/wiki/Opaque_pointer

  • ライブラリーのすべてのインクルードファイルを含むキャッチオールインクルードファイルは避け、実際に必要なヘッダーのみを含めてください。

関連する問題