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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- その他(プログラミング・Web制作) pythonをjupiter notebookからmecabで頻出の高い単語の抽出について(Runt 1 2022/12/17 18:08
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- 英語 「this is the/my first time~」の文法上の制約について 1 2023/04/06 09:48
- 英語 提示した名言の文の構造について(waste one hour of time) 5 2023/05/20 15:22
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
バッチファイルで以下のような...
-
exeファイルを実行するとコマン...
-
VScodeのエラー解決法 Pythonの...
-
これってパソコンの最適化が完...
-
Excel VBA ステップインが途中...
-
cpadでプログラムが実行できない
-
Windows System32 Security Hea...
-
VBscriptが起動しない?
-
Office2010 Access
-
日時計算について
-
ExcelのVBAが特定のPC上でのみ...
-
DLLの登録をVBで行いたい(VB20...
-
VBScriptでコマンドプロンプト...
-
SendKeysを使いたい。
-
Linux Makefile変数の値をプロ...
-
「読み取りと実行」と「読み取...
-
PDFファイルを開き、印刷し、閉...
-
[teraterm] waitコマンドで停止...
-
大量のフォルダからひとつのフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトのエラーに...
-
exeファイルを実行するとコマン...
-
バッチファイルの内容を表示さ...
-
「読み取りと実行」と「読み取...
-
VBscriptが起動しない?
-
[teraterm] waitコマンドで停止...
-
エクセル フォルダの画像を画...
-
Excel VBA ステップインが途中...
-
PDFファイルを開き、印刷し、閉...
-
バッチファイルで以下のような...
-
VScodeのエラー解決法 Pythonの...
-
VBScriptでコマンドプロンプト...
-
バッチファイルが不正終了して...
-
複数のbatファイルを自動実行し...
-
pythonスクリプトを管理者権限...
-
これってパソコンの最適化が完...
-
ネットワーク名が見つかりません
-
VBS実行時にコマンドプロンプト...
-
メッセージを他のPCに出したい
-
VB.NETでのDOSコマンドを実行に...
おすすめ情報