gprofを使ってcygwinからプロファイルをしてみたのですが、時間に関する情報が取得できません。
関数別の呼び出し回数等は取得できているのですが、time等のパラメータがすべて0.0になっています。
具体的には以下のサイトを参考にしてやってみました
http://edu.inf.shizuoka.ac.jp/lecture/2007/X151/ …
http://www.fireproject.jp/feature/gdb/omake/prof …
何かご存知の方がいらっしゃいましたらよろしくお願いします。
以下は出力結果のサンプルです
$ gprof ./a.exe
Flat profile:
Each sample counts as 0.01 seconds.
no time accumulated
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 41000 0.00 0.00 foo
0.00 0.00 0.00 700 0.00 0.00 fuga
0.00 0.00 0.00 10 0.00 0.00 hoge
granularity: each sample hit covers 0 byte(s) no time propagated
index % time self children called name
0.00 0.00 6000/41000 main [41]
0.00 0.00 35000/41000 fuga [4]
[3] 0.0 0.00 0.00 41000 foo [3]
-----------------------------------------------
0.00 0.00 200/700 main [41]
0.00 0.00 500/700 hoge [5]
[4] 0.0 0.00 0.00 700 fuga [4]
0.00 0.00 35000/41000 foo [3]
No.4ベストアンサー
- 回答日時:
gprof を2.18.50にバージョンアップしてみたところ、
同様に実行時間が取得出来ない現象が確認出来ました。
http://ftp.jaist.ac.jp/pub/cygwin/release/binuti …
より「GNU gprof 2.17.50」をダウンロードできるみたいなので、
こちらも試してみてください。
拙者の予想だと、gmon.outの書式に使用変更があり、gprofは対応済みだったのに、
gccがまだ古い仕様で動いていたとか言う落ちじゃないだろうか・・・
GNU gprof 2.17.50をダウンロードしてみましたが環境の違いか、残念ながらgcc自体ができなくなって試せませんでした。
>gprof を2.18.50にバージョンアップしてみたところ、
>同様に実行時間が取得出来ない現象が確認出来ました。
そうですか、gprofの利用は無理そうなので他の手段を探してみたいと思います。
色々と試していただきありがとうございました。
とても勉強になりました。
No.3
- 回答日時:
当方の環境でも、gprofを試してみました。
実行結果
----------------------------------------------------------------------
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
100.00 84.46 84.46 1000 0.08 0.08 hogehoge
0.00 84.46 0.00 1 0.00 84.46 hogehoge_test
----------------------------------------------------------------------
と、実行時間は問題なく、取得できましたよ。
プログラムを変更して、ビルドしなおした時は、
「gmon.out」を再作成する必要があるみたいです。
gmon.outの再作成はしていますか?
確認環境:
Microsoft Windows 2000 Pro
cygwin+gcc
gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
GNU gprof 2.17.50
確認したプログラム
----------------------------------------------------------------------
#include <stdio.h>
void hogehoge();
void hogehoge_test();
int main(int argc, char *argv[])
{
hogehoge_test();
return 0;
}
void hogehoge()
{
int i = 0;
int j = 0;
int isSosuu = 0;
for (i = 1; i < 10000; i++)
{
isSosuu = 0;
if (i == 1 || i == 2) {
isSosuu = 1;
} else if (i % 2){
isSosuu = 1;
for (j = 3; j <i; j += 2)
{
if (!(i % j))
{
isSosuu = 0;
break;
}
}
}
if (isSosuu)
{
printf("%d ", i);
}
}
}
void hogehoge_test()
{
int i = 0;
for (i = 0; i < 1000; i++)
{
hogehoge();
}
}
----------------------------------------------------------------------
試していただきありがとうございます。
>gmon.outの再作成はしていますか?
毎回作り直しています。いったん消してやってみましたが同様に時間が取得できませんでした。
実際に貼って頂いたコードで実行してみましたが、うまくいきませんでした。
実行手順としては以下の流れで行っています。
1. gcc -pg test.c
2. ./a.exe
3. gprof ./a.exe gmon.out
以下が結果です。
----------------------------------------------------------------------
確認環境:
Microsoft Windows Vista Home Basic
cygwin+gcc
gcc (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
GNU gprof 2.18.50
実行結果
----------------------------------------------------------------------
Flat profile:
Each sample counts as 0.01 seconds.
no time accumulated
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 1000 0.00 0.00 hogehoge
0.00 0.00 0.00 1 0.00 0.00 hogehoge_test
----------------------------------------------------------------------
No.1
- 回答日時:
あなたが提示した一つ目の参考サイトに
| - Cygwin 環境でも gprof は利用できるが、プロファイル結果に一部不具合がある。
| -- 関数呼び出し回数は正しくカウントできるが、経過時間の値が正しくない。
| -- Linux 環境ではミリ秒単位での測定できるが、Cygwin では秒単位での測定しかできないため、誤差が大きい。
って書いてあるから、
cygwin上のgprofは時間を計るには使い物にならないんじゃない?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
VBscriptが起動しない?
-
[teraterm] waitコマンドで停止...
-
これってパソコンの最適化が完...
-
「読み取りと実行」と「読み取...
-
エクセル フォルダの画像を画...
-
EXIF情報を出力するマクロ
-
exeファイルを実行するとコマン...
-
他のexeファイルを実行する方法...
-
バッチファイルが不正終了して...
-
シェルで5分前の時間を取得したい
-
pythonスクリプトを管理者権限...
-
複数のbatファイルを自動実行し...
-
ネットワーク名が見つかりません
-
PDFファイルを開き、印刷し、閉...
-
ExcelのVBAが特定のPC上でのみ...
-
バッチにてforでiniファイルの...
-
桐の一括処理のCMDファイルを自...
-
ブラウザーのリンクをクリック...
-
バッチファイルの文字列をVBSに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
[teraterm] waitコマンドで停止...
-
これってパソコンの最適化が完...
-
VBscriptが起動しない?
-
バッチファイルの内容を表示さ...
-
「読み取りと実行」と「読み取...
-
ネットワーク名が見つかりません
-
PDFファイルを開き、印刷し、閉...
-
エクセル フォルダの画像を画...
-
VScodeのエラー解決法 Pythonの...
-
【VB.NET】exeを実行すると「発...
-
バッチファイルが不正終了して...
-
pythonスクリプトを管理者権限...
-
Excel(エクセル) VBA プロシー...
-
Excel VBA ステップインが途中...
-
NASに移したBATファイルからセ...
-
複数のbatファイルを自動実行し...
-
16進数の変換処理
-
VBScriptでコマンドプロンプト...
おすすめ情報