unix中的time命令开销

时间:2012-08-07 02:27:03

标签: bash unix time overhead unix-timestamp

我想知道在unix中使用time命令的开销是多少。

我知道如何使用它,但我想知道命令多长时间

$ time java HelloWorld

接受终端,而不是命令

$ java HelloWorld

特别对此开销如何随正在运行的程序的持续时间而变化感兴趣。

上下文:: 我用它来衡量一堆用Java编写的长期运行实验所需的时间。

2 个答案:

答案 0 :(得分:10)

开销是固定的,并且基于source code,仅仅是因为正在启动额外的进程(time进程本身),引入了少量的额外处理< SUP>(a)中。通常,shell会启动你的程序,但在这种情况下,shell启动timetime启动你的进程(使用fork)。

此额外处理涉及:

  • 参数处理。
  • 孩子forkexec所花费的时间。

当正在测量的过程正在运行时,time本身只是在等待它退出(通过wait调用),因此对该过程没有影响。

因此,虽然time进程的启动时间实际上包含在度量中,但这些只对非常短的进程有意义。如果您的流程运行了相当长的时间,time的开销就无关紧要了。

至于我的意思是什么,你可以通过使用非常快的可执行文件运行它来看到效果time,并且看看它是否有更长时间运行进程的开销明显增加:

pax> time sleep 0
real    0m0.001s
user    0m0.000s
sys     0m0.000s

pax> time sleep 1
real    0m1.001s
user    0m0.000s
sys     0m0.000s

pax> time sleep 10
real    0m10.001s
user    0m0.000s
sys     0m0.004s

pax> time sleep 100
real    1m40.001s
user    0m0.000s
sys     0m0.000s

换句话说,几乎没有任何影响。

现在,因为如果它们长时间运行,你很可能只是计时进程(除非你运行它,否则很难关注单个进程是否需要一到两毫秒很多连续几次,在这种情况下有更好的方法来提高性能),time的固定开销变得越来越不重要。


(a):并且,如果您使用内置time的shell(例如bash及其time保留字),即使是那么小的开销也会消失。

答案 1 :(得分:3)

time的开销应该是相当稳定的,无论程序被定时。它所要做的就是获取时间戳,运行程序,获取另一个时间戳并输出结果。

在准确性等方面:您运行的程序越短,time对其产生的影响就越大。例如时间&#34; Hello World&#34;可能不会给你带来好成绩。在运行一段时间的东西上的时间将是非常准确的,因为时间的开销将在噪音中很好地下降。