1

ダイナミックライブラリにコンパイルするいくつかの大きなコードベースがあります。これらのいくつかには、非常に高価な動的グローバル動的初期化子があることを私は知っています。(つまり、構築に非常にコストがかかるクラス/構造体のグローバルインスタンスです。)

これらの動的初期化子がコード内の何/どこにあるかのリストを表示して、それらが高価でリファクタリングが必要かどうかを確認する方法が必要です。これらのライブラリのいくつかは非常に大きく、おそらく何百もの動的初期化子を含んでいるので、多くのアセンブリを掘り下げることは避けたいと思います(それらの多くは文字列構造のように小さくてかなり安価です)。

これを支援するツールはありますか?(私のツールチェーンはRedhat Linux / gcc / cmakeです。)

4

1 に答える 1

2

valgrindのcallgrindツールでコードを実行してみてはどうでしょうか。これにより、実行のプロファイルが作成されます(I / OではなくCPUの観点から、コストがかかると言ったと思います)。気になるこれらの多くのものをロードする以外に何もしない小さなテストプログラムを作成してから、プロファイルを分析します(たとえば、callgrind出力ファイルでグラフィカルツールkcachegrindを使用します)。

于 2011-11-13T21:32:45.000 に答える