2016-02-27 9 views
6

pimpl(コンパイラファイアウォール)イディオムは、コンパイル時間を短縮するために使用されますが、読みやすさと実行時のパフォーマンスが低下します。プロジェクトがコンパイルするのに時間がかかります。ベストピンププ候補はどれですか?pimpl候補の測定方法は?

私はプロジェクトのコンパイル時間を2時間から10分に短縮したpimplを使った経験がありますが、私は本能にちょうど従いました。私は(1)多くのソースコード(2)複合/テンプレートクラスは、にきびのイディオムを使用するのに最適な候補です。

どのクラスが客観的に良いピンププ候補であるかを指摘するツールはありますか?

+1

OT:私はPIMPLを使用する主な理由は、非肥大化への実装の詳細からパブリックインターフェイスだったという印象の下に常にでした。とにかく、偉大な質問 – sjaustirni

+0

コンパイル時のパフォーマンスの利得を確認するためにプリコンパイルされたヘッダーを使用してみましたか? – Christophe

+0

@Christophe:はい、プリコンパイル済みヘッダーを使用しました。私の元の疑問を抱くことは、「プリコンパイルされたヘッダー候補を測定する方法は? – richelbilderbeek

答えて

0

これは、Pimplがインクリメンタルコンパイルに役立つことは事実です。

しかし、Pimplを使用する主な理由は、ABIとの互換性を維持するためです。これは、APIのほぼすべてのパブリッククラスのための私の過去の会社のルールでした。

その他の利点は、実装の詳細が公開されていないヘッダーを含むパッケージとしてライブラリを配布できることです。

これは私が言うことです:できるだけPimplを使用してください。 QtのPIMPL実装の詳細とメリットの

A非常に良い記事は:

  • が小さいにあなたの大規模なプロジェクトを分割
  • をプリコンパイル済みヘッダーを使用して:https://wiki.qt.io/D-Pointer

    コンパイル時の問題がで対処しなければなりませんコードタッチ周波数で1つ。頻繁に変更されない部分は、ライブラリでコンパイルし、他の人がバージョン別に参照するローカルリポジトリに公開することができます。

  • ...
+0

これらの点で私を啓発してくれてありがとうサッド。それでも、私の質問は、どのようにpimplを使用してコンパイル時に最も多くの増加を与えるかを測定することです。その答えに最も近いのは、あなたの大きなプロジェクトをコードタッチ頻度で小さなプロジェクトに分けるというあなたの提案です。私の質問は、「どうやってそれを測定するのですか? – richelbilderbeek

関連する問題