特定のコマンドの時間を計るにはどうすればよいですか?


67

(TimeThis.exeに相当するLinux)

何かのようなもの:

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

wget foo.com took 3 seconds.

回答:


94

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つの値が返されます。これは、コマンドライン「時間」を使用する場合の「システム時間」とは異なりますが、要するに、実際は「ウォールクロック時間」を意味し、ユーザーsysはCPUクロック時間を表示し、通常のコードとシステムコールに分割します。


26

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

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

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


4
以下に注意してください。パスは重要です。bashで「時間」を使用しないでください。代わりに、/ usr / bin / time
CodeFarmer 14

1
/usr/binPATHにある場合の違いは何ですか?
ガロア

@galois違いは、明示的なパスなしでは、シェルの組み込みtimeユーティリティが使用されることです。
クサラナナンダ

command timeまたは\timeを使用して、ビルドインの代わりにユーティリティを実行することもできます。
-forcefsck

0

@galois:さまざまなシェルには、パス内の何よりも優先される少数の「組み込み」コマンドがあります。通常、これは有利です。ビルトインは(外部ファイルを呼び出さないため)より高速に実行される傾向があり、通常は目的の結果が得られます(つまり、時間コマンドの場合、「 --format」フラグ)。

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

シェルが外部時間コマンドを使用するように強制するには、パスを提供する必要があります

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