如何为特定命令计时?

如何为特定命令计时?

(Linux 相当于 TimeThis.exe)

就像是:

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

wget foo.com took 3 seconds.

答案1

尝试只是time代替timethis.

尽管请注意,通常有一个 shell 内置版本的时间二进制版本,它将给出不同格式的结果:

$ 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”程序不同,您会返回三个值。这被分解为在命令行中使用“时间”时,什么是“系统时间”,但简而言之:真实的表示“挂钟时间”,而用户系统显示 CPU 时钟时间,分为常规代码和系统调用。

答案2

通过使用可执行文件time而不是内置的 shell,您可以指定输出格式和值。例如,获取实际经过的时间以及命令名称和参数

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

请注意,您必须指定 的路径time,否则您将默认使用内置的 shell。您还可以使用command time\time来执行实用程序而不是内置程序。

答案3

@galois:各种 shell 都有一些“内置”命令,这些命令优先于路径中的任何内容。通常这是有利的;内置函数往往会运行得更快(因为不调用外部文件)并且通常会给出所需的结果(即,在时间命令的情况下,您通常不关心您正在使用哪个版本,除非您想使用“ --format”标志)。

因此,没有任何特殊字符(如 /)的“时间”使其看起来像一个路径,最终将运行内置程序,无论您的 PATH 是什么样的。

要强制 shell 使用外部时间命令,您必须提供路径

相关内容