/ usr / bin / time - 格式化输出经过的时间(以毫秒为单位)

时间:2013-06-06 10:09:02

标签: bash time debian time-format

我使用/ usr / bin / time程序来测量命令的时间。 使用--format参数,我可以格式化输出。 e.g。

/usr/bin/time -f "%e" ls

有没有办法输出经过的秒数的更高精度?或者只输出毫秒,而不是秒?

在/ usr / bin / time的手册里,它只说了几秒钟,但也许有办法,有人可以帮我... 谢谢!

修改: 我知道bash命令“time”,它使用环境变量“TIMEFORMAT”的格式。对不起,但我不想改变那个env-var ...对我来说似乎有风险,解决方案应该是不会改变运行系统的东西:)

3 个答案:

答案 0 :(得分:33)

一种可能性是使用date命令:

ts=$(date +%s%N) ; my_command ; tt=$((($(date +%s%N) - $ts)/1000000)) ; echo "Time taken: $tt milliseconds"

%N should return nanoseconds,1毫秒是1000000纳秒,因此除法将返回以毫秒为单位执行my_command所需的时间。

注意表示%N is not supported on all systems, but most of them.

答案 1 :(得分:7)

为方便起见,我将devnull的答案写入了一个脚本(我将其命名为毫秒级)。

#!/bin/bash
ts=$(date +%s%N) ; $@ ; tt=$((($(date +%s%N) - $ts)/1000000)) ; echo "Time taken: $tt milliseconds"

我把脚本放在/usr/local/bin 给它执行权利chmod +x /usr/local/bin/millisecond-time 现在我可以像这样使用它:millisecond-time my_command

P.S。如果我有代表,那将是评论。

答案 2 :(得分:1)

这个帖子中有几件事情令人困惑。

Bash 有一个内置的 time 命令,它支持一个 TIMEFORMAT 环境变量,可以让您格式化输出。有关此运行的详细信息,请运行 man bash 并搜索 TIMEFORMAT

还有一个标准的 /usr/bin/time 命令行实用程序,它支持 TIME 环境变量,可以让您格式化输出(或者您可以使用 -f--format在命令行上)。有关此运行的详细信息,请运行 man time 并搜索 TIME

如果你想要命令运行的秒数,你可以使用内置的 bash 命令(它支持三个小数位的最大精度):

bash# export TIMEFORMAT="%3lR" 
bash# time find /etc > /dev/null
0m0.015s

或者您可以使用命令行实用程序(它支持两位小数的最大精度):

shell# export TIME="%E"
shell# /usr/bin/time find /opt/ > /dev/null
0:00.72

如上所述,这些变量都没有被其他任何东西使用,并且可以安全地更改。