時間コマンドを平均する方法は?


18

私はtimeいくつかのコマンドを実行しています。ここで、メジャーを平均するために、コマンドを指定された回数実行して時間を計り、計算された平均と標準偏差で結果を取得したいと思います。結果は次のようになります。

avgtime -n 100 my_command

real    0m5.388s stdev 0m0.068s
user    0m5.380s stdev 0m0.067s
sys     0m0.004s stdev 0m0.000s

このためのUNIXツールはありますか?GNU / Linuxにはありますか?

回答:


7

Pythonを搭載したシステムで利用可能なtimeitモジュールを使用してみてください:

$ python -m timeit "__import__('os').system('my command here')"
10 loops, best of 3: 591 msec per loop

を使用するとos.system()、各コマンドでシェルを呼び出したり作成したりするオーバーヘッドが発生します。おそらくsubprocess.call()を使用した方が良い
Anthon 14

本当、しかし、一定っぽいとにかくそうだろう
bhdnx

4

UNIXやGNU / Linuxのツールではありませんが、このための統計計算にRソフトウェア環境を非常に快適に使用できます。(ただし、あなたのタスクに特定の何か見つかりませ。)

編集どうすればそれを疑うことができますか?もちろん、以下のベンチマークパッケージがありRますrbenchmarksystem.time()直接使用することもできるようにラップしているようです。 または、これを見てください、シンプルなストップウォッチ機能のペア。「システムコマンドの実行」@Rosetta Code も参照してください(または、しないでくださいsystem("command")。)

Edit2右の「関連」列に「スクリプト内の時間を測定する」という質問がありました。これも使用できます。つまり、時間をかけ、forループ(N時間)を行い、再び時間を取り、タイムスパンを計算し、除算しますN。(さらに簡単に、試してtime ( for-loop )、出力を解析し、で除算しますN)。


3

を使用Rして、平均値、標準偏差、その他の興味深い値をすばやく計算できます。

たとえば、GNU時間を使用して、いくつかのランタイム測定値をCSVファイルに書き込むことができます。

function measure
{
  f=$1; shift
  n=$2; shift
  echo wall,user,sys,rss > "$f"
  for i in $(seq $n); do
    /usr/bin/time --output "$f" --append --format '%e,%U,%S,%M' "$@" >/dev/null
  done
}

次に、次のようにRを使用して値を生成できます。

Rscript --vanilla -e "b=read.csv(file='$f');summary(b);sapply(b, sd);"

R出力のきれいな印刷も行う小さなベンチマークスクリプトを作成しました。たとえば:

$ benchmark.sh 100 ./some_prog arg1 arg2
n=100 | min    | Q1     | med    | mean   | Q3     | max    | std
wall  | 0.0400 | 0.0400 | 0.0500 | 0.0471 | 0.0500 | 0.0800 | 0.00624
user  | 0.0400 | 0.0400 | 0.0400 | 0.0426 | 0.0400 | 0.0700 | 0.00562
sys   | 0      | 0      | 0      | 0      | 0      | 0      | 0.00000
rss   | 2608   | 2657   | 2704   | 2728   | 2764   | 2920   | 95.06524

1

オプション1- sqlite

コマンド列と時間列を持つ単純なテーブルを作成し、適切な集計計算で表示します。計時後、テーブルに追加します。

利点:ソリューション2と比較して、テーブルの定義が簡単です。

短所:データの保持に注意する必要がありますか?

オプション2- rrdtool

rrdデータベースファイル、データ定義、および集計関数を定義します。計時後、データベースにを送りますrrdtool update ...

利点:を使用して簡単にグラフを生成できますrrdtool graph ...。データ保持の問題はありません(ラウンドロビンデータベース)。

短所:単純なSQLテーブル/ビューと比較して、rrdデータベースを定義するのが少し難しい


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.