_CPU_ではなく、この関数での費用を測定するために_REAL_時間を測定するために使用するプロファイラー
質問
アプリケーションは物事を計算するものではありませんが、I/O、読み取りファイル、ネットワークを使用します。プロファイラーに見せてほしい。
CallGrindのようなものが、それぞれのProbleをCloce_GetTimeと呼ぶようなものを期待しています。
またはそれをoprofileのように 割り込み 私のアプリケーション(それが眠っている間、またはソケット/ファイル/何でも待っている間)がそれが何をしているのかを見る。
「読み取り」、「接続」、「ナノスリープ」、「送信」、特に「fsync」などのものが欲しい(そして、彼らのすべての発信者)太字であること(文字列や計算を実行する数字関数のようなものではありません)。
プラットフォーム:GNU/Linux @ i386
解決
Linuxの些細なサンプリングプロファイラーをすばやくハッキングしました: http://vi-server.org/vi/simple_sampling_profiler.html
追加します backtrace(3)
ファイルに SIGUSR1
, 、そしてそれを注釈付きソースに変換します。
プログラムを定期的に調査するため、何かを待つ機能が表示されます。
そして、スタックを歩くと、発信者も表示されます。
また、同様の質問への回答から人々がズームを推奨しています。
他のヒント
あなたのプラットフォームを知らずにその質問に答える本当の方法はありません。
Intelプラットフォームで走っているとき、私は タイムスタンプカウンター(RDTSC). 。サブマイクロ秒の範囲で復活を打ち負かすのは難しいです。コードの塊の前後に電話をかけ、違いを比較します。
所属していません StackOverflow