_CPU_ではなく、この関数での費用を測定するために_REAL_時間を測定するために使用するプロファイラー

StackOverflow https://stackoverflow.com/questions/3992587

質問

アプリケーションは物事を計算するものではありませんが、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). 。サブマイクロ秒の範囲で復活を打ち負かすのは難しいです。コードの塊の前後に電話をかけ、違いを比較します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top