0

私のコードにはたくさんのテンプレートがあります。

どのテンプレートがコードの肥大化を引き起こしているか (つまり、何度もインスタンス化されているため) を特定するにはどうすればよいですか?

4

1 に答える 1

3

質問とそのコメントへの簡単なメモ: テンプレートのインスタンス化の数は重要ではなく、異なるタイプの組み合わせによるインスタンス化の数のみが重要です。これは、テンプレートの特殊化とは大きく異なります。

インスタンス化を手動で追跡する簡単で汚い方法があります。確認したいテンプレートについては、警告を生成する行を追加するだけです。コンパイラの種類とプロジェクトのコンパイラ オプションに完全に依存するため、ここでそのようなステートメントを示すのは困難です。適切な推測は、一意の名前と疑わしい値を持つ静的変数を追加することです。あとは、これらのカスタム警告のコンパイラ ログをフィルター処理するだけです。異なる型の組み合わせはすべて 1 回だけコンパイルされるため、組み合わせごとに 1 つの警告しか表示されません。そうでない場合でも、ログから重複を簡単にフィルタリングできます。

残念ながら、このようなカスタム ステートメントですべてのテンプレートをマークすることは煩わしく、非常に時間がかかる可能性があります。より洗練されたものが必要な場合は、テンプレート メタプログラム デバッガーを試すことができます。ここ (Boost メーリング リスト) には、簡単な要約と、無料で入手できるデバッガーのダウンロード ページへのリンクがあります。

http://boost.2283326.n4.nabble.com/Re-vsix-template-profiler-extension-Templight-td3888368.html

それがどのように機能するのか興味がある場合は、 http: //gsd.web.elte.hu/contents/articles/gpce06.pdfで詳細を読むことができます。

于 2012-05-19T06:36:15.743 に答える