如何衡量终端进程的执行时间?
我正在尝试测量通过命令行调用的进程的执行时间(即,我想知道进程完成所需的时间)。 是否有任何命令可以添加到命令调用将实现此目的的进程?
在要测量的命令之前添加time
。
输出看起来像:
real 0m0.606s user 0m0.000s sys 0m0.002s
关于real
, user
和sys
(从man time
):
-
real
:过程使用的经过的实际(挂钟)时间,以秒为单位。 -
user
:进程直接使用的CPU秒数(在用户模式下),以秒为单位。 -
sys
:系统代表进程使用的CPU秒数(内核模式),以秒为单位。
对于逐行delta测量,请尝试gnomon 。
它是一个命令行实用程序,有点像moreutils的ts,它将时间戳信息添加到另一个命令的标准输出中。 对于长期运行的过程非常有用,在这些过程中,您需要记录长时间运行的历史记录。
将任何内容管道到gnomon都会在每行前面添加一个时间戳,表示该行是缓冲区中最后一行的长度 – 也就是下一行显示的时间长度。 默认情况下,gnomon将显示每行之间经过的秒数,但这是可配置的。
你可以用time
:
time ls -R
date +"%T" && cp -r ./file /destination/folder/here && date +"%T"
在终端中运行此命令将为您提供处理文件的总时间
偶尔我发现自己需要一个秒表来计算像我的应用程序启动这样的动作需要多长时间,在这种情况下,这里的许多解决方案都没用。
为此我喜欢用sw 。
安装
wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw
用法
sw - start a stopwatch from 0, save start time in ~/.sw sw [-r|--resume] - start a stopwatch from the last saved start time (or current time if no last saved start time exists) - "-r" stands for --resume