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

Pre*_*exo 23 bash time debian time-format

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

/usr/bin/time -f "%e" ls
Run Code Online (Sandbox Code Playgroud)

有没有办法输出更长的精确秒数?或者只输出毫秒,而不是秒?

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

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

dev*_*ull 34

一种可能是使用date命令:

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

%N 应该返回纳秒,1毫秒是1000000纳秒,因此除法将返回my_command以毫秒为单位执行的时间.

请注意, %N 并非所有系统都支持,但大多数系统都支持.

  • 对于OSX上没有日期所需的时间分辨率的人,可以用gdate替换本机日期.例如:'brew install coreutils`如果需要,然后`ts = $(gdate +%s%N); 睡1; tt = $((($(gdate +%s%N) - $ ts)/ 1000000)); echo $ tt` [来源](http://apple.stackexchange.com/questions/135742/time-in-milliseconds-since-epoch-in-the-terminal) (2认同)

Inf*_*ght 8

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

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

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

如果我有代表,这将是一个评论.

  • 要允许 `my_command` 有参数,您可能需要将提供的命令括在引号中:`"$@"` (2认同)