google-perftoolsC++ で記述され、g++4.5.2 でコンパイルされたプログラムのプロファイリングに使用しています。CPU 時間の 56% を占めpprofていることがわかります。getaliasbyname_r()いったい何をするのgetaliasbyname_r()?なぜそんなにCPU時間がかかるのですか?この問題を軽減する方法はありますか? ありがとう。コンパイル フラグは次のとおり-O3 -DNDEBUG -Wall -Wno-deprecated -Wno-sign-compareです。システム:ubuntu 11.04。
質問を明確にしておらず申し訳ありません。コードで getaliasbyname_r() を直接使用しませんでした。プロファイリング ツール「pprof」によって生成されたコール グラフでは、ツリー「start--> _libc_start_main-->main-->...」が約 44% の cputime をカウントしていることがわかります。この大きなツリーの他に、コール グラフには別の ioslated 単一ノード ツリー --- getaliasbyname_r があります。グラフに示されているように、それは呼び出されず、他の関数からも呼び出されませんでした。この関数をグーグルで検索したところ、http://linux.die.net/man/3/getaliasbyname_rにたどり着きました。しかし、それはあまり役に立ちませんでした。getaliasbyname_r() がどのように呼び出されたのか、なぜそんなに多くの cputime がかかったのか、まだわかりません。この質問は今意味がありますか?
エイドリアンへの返信: 返信ありがとうございます。合計実行時間は約 28 秒でした。プロファイラーは 100/秒のレートでサンプリングします。合計で約 2800 のサンプルがありました。約 1500 が getaliasbyname_r() で落ち、私が書いた関数を思いつきました (約 450 のサンプルをキャッチしました)。