私は this を確認しましたが、提供されたソリューションは私にとってはうまくいきませんでした。
日付を使用すると、実行時間を秒単位で取得できます。
T="$(date +%s)"
#some work here
T="$(($(date +%s)-T))"
echo "execution time (secs) ${T}"
しかし、これを試してみると:
T="$(date +%s%N)"
#some work here
T="$(($(date +%s%N)-T))"
ナノ秒精度を取得するために日付に%N(上記のとおり)を追加すると、次のエラーが発生します:-bash:1369320760N:値がベースに対して大きすぎます(エラートークンは "1369320760N")
Mac OS Xでbashを使用して実行時間をミリ秒単位で測定する方法を知っている人はいますか?
OSXはBSD風のシステムであるため、strftimeライブラリには%N
( http://www.freebsd.org/cgi/man.cgi?query=date )
Bash組み込みtime
コマンドは、必要な情報を提供しますか?
time some work here
ミリ秒が必要で、BSDが日付をサポートしていない場合は、このルートを使用します+%s%N
Perl -MTime::HiRes -e 'printf("%.0f\n",Time::HiRes::time()*1000)'
echo $(($(date +%s%N)/1000000))
これは、ナノ秒からミリ秒に変換されます。
@mpyから、date +%s.%N
機能します。
ただし、LinuxとOS Xでは出力が異なります。
linux:1369322592.573787111
OS X:1369322610.N
coreutils
をインストールする場合、date
と記述することでGNU Linux gdate
を使用できます。
coreutilsはHomebrewで利用可能です:brew install coreutils
。
Glennは正解です。time
は探しているコマンドですが、必要な情報を解析するには、sed
などの他のプロセッサに渡す必要があります。
time command-goes-here >/dev/null 2>$1|sed rules-go-here
このコマンドは、コマンド自体からの出力を取り除き(標準出力とエラー出力の両方を/ dev/nullに送信)、時間の結果をsedに渡します。ストリームを編集する適切なルールを選択して、出力を行う必要があります。目的の値。
他の答えが述べたように、OS Xの日付は%N(ナノ秒)をサポートしていません。
コマンドを時間通りにスクリプトとして保存できますか?または、サブシェルまたはコマンドグループを使用します。
time (sleep 0.1; echo a; sleep 0.1)
time { sleep 0.1; echo a; sleep 0.1; }
または、個々のコマンドの時間を合計します。
$ time=$(TIMEFORMAT=%R; (time sleep 0.1; echo a) 2>&1 > /dev/null)
$ time+=+$(TIMEFORMAT=%R; (time sleep 0.1) 2>&1)
$ bc <<< $time
.206
または、スクリプト言語を使用します。
$ Ruby -e 'puts "%.3f" % Time.now'
1369329611.046
$ time Ruby -e '""'
0.029
$ time Ruby -e 'puts "%.3f" % Time.now'
1369329622.943
0.029
%.3f
は、小数点が3つある浮動小数点数の形式指定子です。 Time.now はTimeクラスのクラスメソッドです。