人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

宜しくお願いします。

●質問者: tomoyuki28jp
●カテゴリ:コンピュータ
✍キーワード:C++ CPU Java Linux PHP
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● cno
●27ポイント

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コマンドで測定はできると思います

◎質問者からの返答

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

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


2 ● kurukuru-neko
●27ポイント

sysstat

https://www.thinkit.co.jp/free/tech/23/3/

http://www.freewheelburning.com/linux/index.html

C/C++なら

http://www.intel.com/cd/software/products/asmo-na/eng/239142.htm

パフォーマンスに関するHints&Tips集 第1版

http://www.ejbcons.gr.jp/rules/PF-02-01-PR.pdf

◎質問者からの返答

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

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


3 ● longicorn
●26ポイント

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


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


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

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

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

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


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

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


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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ