Linuxで自作プログラムのベンチマークをとりたいと思っています。


具体的に調べたいのは下記の3点。
1)プログラム開始〜終了までの時間(速度)
2)CPU負荷
3)使用メモリ

プログラム内にて終了までの時間を測定するのは簡単なのですが、
Linuxで上記3点を測定する方法はありますでしょうか?

プログラムから使用したメモリとCPUの負荷を調べることはできませんよね?
想定プログラム言語はC, C++, PHP, Java等。

宜しくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2007/04/21 22:25:13
  • 終了:2007/04/28 22:30:03

回答(3件)

id:cno No.1

cno回答回数124ベストアンサー獲得回数122007/04/21 22:51:19

ポイント27pt

1)については少なくともJavaだと可能だと思われます。

サンプルコード)

public class Hoge {

public static void main(String[] args) {

try{

Date before=new Date();

Process process=Runtime.getRuntime().exec("作成したプログラムを実行するためのコマンド");

process.waitFor();

Date after=new Date();

long milliSecond=after.getTime()-before.getTime();

System.out.println("処理時間:"+milliSecond+"ミリ秒");

}catch(Exception e){

e.printStackTrace();

}

}

}

2),3)についてはプログラムからの測定方法はわかないのですが、Linuxのtopコマンドで測定はできると思います

id:tomoyuki28jp

御回答ありがとうございます。

上述の通り、1はどの言語でも簡単にできるのですが、残りの2つを簡単にできる方法を知りたいのです。

2007/04/22 01:04:14
id:kurukuru-neko No.2

kurukuru-neko回答回数1844ベストアンサー獲得回数1552007/04/22 16:49:37

id:tomoyuki28jp

Linuxのコマンドであれば、uptimeやtopよりも、time ./a.outの方が、かなり理想に近いのですが、それだとメモリが表示されないのですよね。

Linuxのコマンド一発で簡単にというのはできないのでしょうか?

2007/04/23 17:53:55
id:longicorn No.3

longicorn回答回数56ベストアンサー獲得回数62007/04/24 23:24:32

ポイント26pt

1は簡単なので省略します。


2、3は汎用性を求めるとps(1)かtop(1)の結果をpopen(3)で取得すれば良いでしょう。


ps(1)やtop(1)と同じ事をしたいというのであれば、

/proc以下を使用することになります。

ただ、/proc以下はKenelのバージョンによって異なるので注意が必要です。

また他Unixでも異なります。


システム全体の情報であれば、/proc/statとか/proc/meminfo辺りが対象になるかと思います。

各プロセス毎の情報が欲しいのであれば/proc/[pid番号]以下が対象になります。


詳しくは実行するシステムのmanを参照してください。

コメントはまだありません

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

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

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

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