linux下time 命令可以获取到一个程序的执行时间 ,包括程序的 实际运行时间(real time) ,以及程序运行在用户态的时间(user time)和内核态的时间(sys time)。用法是在待执行的命令前加上time即可。

实例

当测试一个程序或比较不同算法时,执行时间是非常重要的,一个好的算法应该是用时最短的。所有类UNIX系统都包含time命令,使用这个命令可以统计时间消耗。例如:

[root@localhost ~]# time ls
anaconda-ks.cfg  install.log  install.log.syslog  satools  text
real    0m0.009s
user    0m0.002s
sys     0m0.007s

会看到其先执行了ls命令,在程序或命令运行结束后,在最后输出了三个时间, 它们分别是:

real:实际时间,从command命令行开始执行到运行终止的消逝时间;

user:用户CPU时间,命令执行完成花费的用户CPU时间,即命令在用户态中执行时间总和;

system:系统CPU时间,命令执行完成花费的系统CPU时间,即命令在核心态中执行时间总和;

注:用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。

shell内建也有一个time命令,当运行time时候是调用的系统内建命令,应为系统内建的功能有限,所以需要时间其他功能需要使用time命令可执行二进制文件 /usr/bin/time

使用-o
选项将执行时间写入到文件中:

/usr/bin/time -o outfile.txt ls

使用-a
选项追加信息:

/usr/bin/time -a -o outfile.txt ls

使用-f
选项格式化时间输出:

/usr/bin/time -f "time: %U" ls

-f
选项后的参数:

参数描述
%Ereal时间,显示格式为[小时:]分钟:秒
%Uuser时间。
%Ssys时间。
%C进行计时的命令名称和命令行参数。
%D进程非共享数据区域,以KB为单位。
%x命令退出状态。
%k进程接收到的信号数量。
%w进程被交换出主存的次数。
%Z系统的页面大小,这是一个系统常量,不用系统中常量值也不同。
%P进程所获取的CPU时间百分百,这个值等于user+system时间除以总共的运行时间。
%K进程的平均总内存使用量(data+stack+text),单位是KB。
%w进程主动进行上下文切换的次数,例如等待I/O操作完成。
%c进程被迫进行上下文切换的次数(由于时间片到期)。

来源:浩Coding

最后修改:2022 年 05 月 22 日
如果觉得我的文章对你有用,请随意赞赏