time命令可以统计一个程序的执行时间,可以用于评估一个程序的性能。
[root@localhost ~]# time ls
anaconda-ks.cfg install.log install.log.syslog satoolsreal 0m0.009s
user 0m0.002s
sys 0m0.007s
-
real
时间是指挂钟时间,也就是命令开始执行到结束的时间。这个短时间包括其他进程所占用的时间片,和进程被阻塞时所花费的时间。 -
user
时间是指进程在用户模式中的CPU执行时间,其他进程花费的时间和阻塞状态的时间没有计算在内。 -
sys
时间是进程在内核模式中的CPU执行时间,代表进程使用系统调用所花费的CPU执行时间,这也是由进程执行而消耗的CPU执行时间。
执行模式?
操作系统在执行一个进程时,会不断的在两种模式之间切换,它们是用户模式
与内核模式
。
用户模式很好解释,就是这个进程的程序本身被运行时的运行模式。比如在程序中给反转一个字符串之类的操作,这个操作因为完全不依赖于其他系统调用,所以是在用户模式下被执行。那么当程序中有一段代码需要读取一个文件的时候,操作系统就需要切换到系统模式下执行文件读写
系统调用了。
若想深入理解什么是系统调用可以阅读[Linux系统调用详解(实现机制分析)--linux内核剖析(六)](
http://blog.csdn.net/gatieme/article/details/
总结
上面ls
命令的用户模式下执行时间是0.02秒,内核模式下(ls命令需要调用访问文件系统的系统调用)的执行时间是0.007秒。合计ls
命令的执行时间就是0.027秒。
所以,一个程序的CPU执行时间等于user时间加上sys时间。