web-dev-qa-db-ja.com

特定のコマンドの時間をどのように計りますか?

(LinuxのTimeThis.exeに相当)

何かのようなもの:

timethis wget foo.com
Receiving foo.com  
...

wget foo.com took 3 seconds.
71
ripper234

timeではなくtimethisだけを試してください。

シェルの組み込みバージョンの時間のバイナリバージョンがよくあることに注意してください。これにより、さまざまな形式で結果が得られます。

$ time wget -q -O /dev/null https://unix.stackexchange.com/

real    0m0.178s
user    0m0.003s
sys     0m0.005s

$ \time wget -q -O /dev/null https://unix.stackexchange.com/
0.00user 0.00system 0:00.17elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+613minor)pagefaults 0swaps

「timethis」プログラムとは異なり、3つの値が返されます。 コマンドラインで「time」を使用する場合の「システム時間」とは に分解されますが、簡単に言うと:realは「壁時計時間」、userおよびsysがCPUクロックを表示時間、通常のコードとシステムコールの間で分割されます。

103
mattdm

ビルトインシェルの代わりに実行可能ファイルtimeを使用すると、出力形式と値を指定できます。例えば。コマンド名とパラメーターとともに実際の経過時間を取得する

/usr/bin/time --format='%C took %e seconds' sleep 3
sleep 3 took 3.00 seconds

musttimeのパスを指定することに注意してください。そうでない場合、デフォルトで組み込みのシェルを使用します。

26
forcefsck

@galois:さまざまなシェルには、パス内のすべてのものよりも優先される少数の「組み込み」コマンドがあります。通常、これは有利です。ビルトインは(外部ファイルを呼び出さないため)より高速に実行される傾向があり、通常は望ましい結果が得られます(つまり、timeコマンドの場合、通常は使用するバージョンを気にしませんが、「 --format "フラグ)。

したがって、パスのように見えるようにするための特殊文字(/など)なしの「時間」は、PATHがどのように見えるかに関係なく、組み込みを実行することになります。

シェルに外部時間コマンドを使用させるには、パスを指定する必要があります

0
Tom Payerle