我使用/ usr / bin / time程序来测量命令的时间。 使用--format参数,我可以格式化输出。 e.g。
/usr/bin/time -f "%e" ls
有没有办法输出经过的秒数的更高精度?或者只输出毫秒,而不是秒?
在/ usr / bin / time的手册里,它只说了几秒钟,但也许有办法,有人可以帮我... 谢谢!
修改: 我知道bash命令“time”,它使用环境变量“TIMEFORMAT”的格式。对不起,但我不想改变那个env-var ...对我来说似乎有风险,解决方案应该是不会改变运行系统的东西:)
答案 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
所需的时间。
答案 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
如上所述,这些变量都没有被其他任何东西使用,并且可以安全地更改。