Linux, gccという環境で、プログラムの実行速度プロファイルをとりたいと思っています。


ソースコードに特定のコードを埋め込むと、各処理にかかった時間などを調べてくれる標準的な方法を教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/12/05 16:10:20
  • 終了:--

回答(3件)

id:masahikokimoto No.1

masahikokimoto回答回数241ベストアンサー獲得回数102005/12/05 16:15:57

ポイント50pt

http://limu.is.kyushu-u.ac.jp/~yosimoto/memo/kondara/gprof.html

こ じ ん て き ★ お ぼ え が き - gdb -

gprofを使います。

gccでコンパイルする時に-pgオプションを付けると、プロファイル情報を出力するバイナリを生成します。出来たファイルをgprofにかけると、プロファイル情報が得られます。

id:anom

ありがとうございます。

動的リンクされるものや、Apacheモジュールのような場合も分かるとさらに助かります。

2005/12/05 16:21:01
id:fruitage No.2

fruitage回答回数77ベストアンサー獲得回数02005/12/05 16:21:55

ポイント10pt

これでどうでしょう?

id:anom

ありがとうございます。

動的ライブラリに関して補足がほしいです。

2005/12/05 16:28:20
id:dev_zer0 No.3

dev_zer0回答回数332ベストアンサー獲得回数252005/12/05 16:39:05

ポイント10pt

gccに-pgオプションを付けてa.outを作成します。

# a.out以外でも構いませんが...

a.outを実行するとカレントディレクトリにgmon.outというファイルが出来るので、

gprofコマンドを呼び出すと各関数の呼び出し回数、消費時間などが取れます。

id:anom

ありがとうございます。

すでに同様の回答をいただいております。

.soライブラリなどの場合を教えてください。

2005/12/06 12:38:06
  • id:dev_zer0
    soについては...

    色々調べてみたんですが、gprofはa.outのシンボルテーブルを使うようなので、soの中まではプロファイル出来ないような気がします。
    # aCCなど、soのシンボルテーブルまで遡ってプロファイリングする処理系もありますが、
    # それでもdlopenなんかされているとお手上げです。

    ライブラリを作らずに、実行モジュールとして-pgを付けて再コンパイルぐらいしか思いつきませんが、それではダメなんでしょうか?
  • id:anom
    Re:soについては...

    >色々調べてみたんですが、gprofはa.outのシンボルテーブルを使うようなので、soの中まではプロファイル出来ないような気がします。
    ># aCCなど、soのシンボルテーブルまで遡ってプロファイリングする処理系もありますが、
    ># それでもdlopenなんかされているとお手上げです。
    >
    >ライブラリを作らずに、実行モジュールとして-pgを付けて再コンパイルぐらいしか思いつきませんが、それではダメなんでしょうか?
    >

    詳細な調査ありがとうございます。
    事情がありまして、通常の実行モジュールとしてのビルドは難しい状況です。
    別の方法を検討したいと考えています。
    ご丁寧な書き込みありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません