我试图弄清楚我的代码的性能,但我不理解time
命令的输出,任何人都可以解释时间命令输出的含义。
以下是我得到的:
time ./filereader
real 0m0.193s
user 0m0.012s
sys 0m0.056s
什么是real
,user
,sys
?
答案 0 :(得分:43)
来自:http://zch051383471952.blogspot.com/2010/01/different-of-real-user-sys-time.html
实际是指实际经过的时间; User和Sys指的是使用的CPU时间 只有这个过程。
- Real是挂钟时间 - 从通话开始到结束的时间。这是 所有经过的时间,包括时间片 其他过程和时间使用的 进程花费被阻止(例如,如果 它正在等待I / O完成。)
- 用户是在用户模式代码中花费的CPU时间量(在...之外) 内核)在这个过程中。这是 仅执行时使用的实际CPU时间 这个过程。其他流程和时间 流程花费被阻止不 算上这个数字。
- Sys是进程内核中花费的CPU时间。这个 表示执行CPU时间 内核中的系统调用,如 反对库代码,这是 仍在用户空间中运行。喜欢 'user',这只是CPU使用的时间 这个过程。
答案 1 :(得分:10)
'real'是它花费的时钟量。如果你要用秒表计时,那就是你得到的。
'user'是进程本身使用的CPU时间量。
'sys'是内核代表进程花费的CPU时间。
答案 2 :(得分:0)
如果您使用C / C ++进行开发,则应使用gprof来分析代码,请检查http://www.cs.duke.edu/~ola/courses/programming/gprof.html。