4

gprofを使用して、オプション-pgを含むg++でコンパイルされたc++コードのプロファイリングを試みています。ただし、プログラムが私のコンピューターで実行されるのに10〜15分かかるという事実にもかかわらず(CPUが最大になっている場合)、gprofによって生成されるテーブルの%時間、累積秒、および自己秒の列は完全に0.00秒です!呼び出し列には、基本関数への150,000を超える呼び出しなど、正しい外観のデータが含まれています。収集されたデータのサンプルは次のとおりです。

  %   cumulative   self              self     total           

 time   seconds   seconds    calls  Ts/call  Ts/call  name

  0.00      0.00     0.00   156012     0.00     0.00  perm::operator[](int) const

  0.00      0.00     0.00   153476     0.00     0.00  perm::perm(void)

プログラムは文字列を使用せず、#includeはiostream(最終的な回答を出力するためにのみ使用される)のみであるため、文字列の検索と比較、またはこの質問で提案されている他の同様の遅い外部関数のために遅くなることはありません:できませんgprofを使用して時間を蓄積する-gnuプロファイラー

プログラム自体は正常に終了し、プロファイルデータが正しく書き込まれていないと信じる理由はありません(ここで提案されているように:gprofは時間が蓄積されていないことを報告します

これはすべてWindows7で行われているため、SharkまたはValgrindを使用することはできません。

各機能に費やされた0.00秒を記録している理由はありますか?

4

1 に答える 1

4

gprofは、I / Oやその他のもののように、ブロックされた時間をカウントしません。また、「セルフタイム」は通常、サブ関数ですべての作業を行うルーチンでは非常に小さいです。たとえば、gprofが表示できないDLLでライブラリを主に使用している場合などです。この答えを確認してください。

于 2010-08-30T21:17:24.497 に答える