如何理解time命令的输出?

62

我试图弄清楚我的代码的性能,但我不理解time命令的输出。有人可以请解释一下time命令输出的含义吗?

下面是我得到的内容:

time ./filereader 

real    0m0.193s
user    0m0.012s
sys 0m0.056s

什么是realusersys


1
请看重复问题的全面答案:https://dev59.com/4XRB5IYBdhLWcg3wroyB - Sébastien Le Callonnec
3个回答

67

来源:http://zch051383471952.blogspot.com/2010/01/different-of-real-user-sys-time.html

"Real"指实际经过的时间; "User" 和 "Sys" 指进程仅使用的 CPU 时间。

  • "Real"是从开始到结束的墙上时钟时间。这包括了 其它进程使用的时间片以及进程因等待 I/O 完成而阻塞的时间。
  • "User"指进程在用户模式(内核外)中所花费的 CPU 时间。这仅是进程执行中真正使用的 CPU 时间,其它进程和进程所花费的阻塞时间不计入此数。
  • "Sys"指进程在内核中所花费的 CPU 时间。这意味着在内核中执行系统调用所花费的 CPU 时间,与仍在用户空间运行的库代码不同。像"user"一样,这只是进程使用的 CPU 时间。

18

'real'是所花费的时钟时间。如果你用秒表计时,得到的就是这个时间。

'user'是进程本身使用的CPU时间。

'sys'是内核代表该进程使用的CPU时间。


4
“真实时间”并不是秒表所显示的时间,至少根据我的观察是这样。例如,昨晚我启动了一个进程,今天早上它报告“真实时间 2376m6.172s”。实际上,经过的时间不到12个小时。 - feklee
@feklee,您能解释一下这里的“real”是什么意思吗? - Animesh Kumar

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接