web-dev-qa-db-ja.com

/ usr / bin / time-出力の経過時間をミリ秒でフォーマットします

/ usr/bin/timeプログラムを使用して、コマンドの時間を測定します。 --formatパラメーターを使用すると、出力をフォーマットできます。例えば.

/usr/bin/time -f "%e" ls

経過秒数のより大きな精度を出力する方法はありますか?または、秒ではなくミリ秒を出力しますか?

/ usr/bin/timeのマニュアルでは、数秒程度しか書かれていませんが、方法があり、誰かが私を助けてくれます...ありがとう!

[〜#〜] edit [〜#〜]:環境変数「TIMEFORMAT」のフォーマットを使用するbashコマンド「time」について知っています。申し訳ありませんが、env-varを変更したくありません...私にはリスクがあるようです。解決策は、実行中のシステムをまったく変更しないものでなければなりません:)

25
Preexo

1つの可能性は、dateコマンドを使用することです。

ts=$(date +%s%N) ; my_command ; tt=$((($(date +%s%N) - $ts)/1000000)) ; echo "Time taken: $tt milliseconds"

%Nnanoseconds を返す必要があり、1ミリ秒は1000000ナノ秒なので、除算では実行にかかった時間を返しますmy_commandミリ秒。

[〜#〜]注[〜#〜]%Nすべてのシステムでサポートされているわけではありませんが、ほとんどのシステムでサポートされています。

36
devnull

便宜上、devnullの答えをスクリプトに入れました(ミリ秒の時間という名前を付けました)。

#!/bin/bash
ts=$(date +%s%N) ; $@ ; tt=$((($(date +%s%N) - $ts)/1000000)) ; echo "Time taken: $tt milliseconds"

スクリプトを/usr/local/bin
実行権限を付与するchmod +x /usr/local/bin/millisecond-time
これで、次のように使用できます:millisecond-time my_command

追伸担当者がいた場合、これはコメントになります。

8
Infineight