使用 GNU 时间打印毫秒

使用 GNU 时间打印毫秒

我正在使用 GNU 时间进行基准测试,并希望测量实际时间、用户时间和系统时间,精确到毫秒。也就是说,我想测量秒到小数点后 3 位,而不是默认的 2 位。GNU 时间提供这样的选项吗?

答案1

看起来你不能,手册页确实列出了许多格式选项,但没有提供设置准确性的规定。例如,%e%S%U似乎总是给出带有两位小数的输出。

另一方面,Bash 的内置函数time确实支持设置小数点后的位数,最多 3 位,因此您也许可以使用它来获得您想要的结果。环境TIMEFORMAT变量控制输出格式:

$ TIMEFORMAT='real: %3R user: %3U sys: %3S cpu: %P' bash -c 'time sleep 1.233'
real: 1.234 user: 0.000 sys: 0.000 cpu: 0.00

或者只是不设置TIMEFORMAT,因为默认输出也显示三位数字。但它确实分开了分钟:

$ bash -c 'time sleep 1.233'

real    0m1.234s
user    0m0.000s
sys     0m0.000s

getrusage()系统调用给出的时间为struct timeval,因此最多为微秒,所以我想您可以自己实现 以time获得更高的准确性。另一件事是这些数字实际上有多准确。

相关内容