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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
これってパソコンの最適化が完...
-
Excel(エクセル) VBA プロシー...
-
ファイルコピーで0x00000005エラー
-
【VB.NET】exeを実行すると「発...
-
IronPython でのエラー
-
vbsにてバッチファイルの実行
-
[teraterm] waitコマンドで停止...
-
Excel VBA ステップインが途中...
-
ウイルスバスター2005評価...
-
バッチファイルの内容を表示さ...
-
Access の VBA 実行中に他の操...
-
exeファイルを実行するとコマン...
-
Autorun.inf 無確認でプログラ...
-
VScodeのエラー解決法 Pythonの...
-
「読み取りと実行」と「読み取...
-
ソフトのダウンロード
-
MinGW,msysでCスクリプトの実行
-
CListCtrl で OnLButtonUp を実...
-
imacroで組んだマクロをバッチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
[teraterm] waitコマンドで停止...
-
「読み取りと実行」と「読み取...
-
これってパソコンの最適化が完...
-
VBscriptが起動しない?
-
ネットワーク名が見つかりません
-
hostファイル
-
バッチファイルの内容を表示さ...
-
エクセル フォルダの画像を画...
-
PDFファイルを開き、印刷し、閉...
-
バッチファイルで以下のような...
-
Excel(エクセル) VBA プロシー...
-
VScodeのエラー解決法 Pythonの...
-
NASに移したBATファイルからセ...
-
pythonスクリプトを管理者権限...
-
Excel VBA ステップインが途中...
-
バッチファイルが不正終了して...
-
16進数の変換処理
-
複数のbatファイルを自動実行し...
おすすめ情報