为什么bash时间比GNU时间更精确?


12

buitin bash命令time可提供毫秒级的执行精度,而GNU time(通常是/ usr / bin / time)可提供毫秒级的精度。的times(2)系统调用给出时钟倍,100个时钟= 1秒(通常),所以精度等GNU time。所以问题是bash time使用什么,以便更精确?


嗯...他们都给我系统上的毫秒...(FC16)
nico

奇怪。是什么使您获得printf(“%d \ n”,sysconf(_SC_CLK_TCK)); 如上所述,应为100。有人有与我类似的观察结果:dirac.org/linux/time但仍然没有解释。
卢卡斯索瓦

是的,实际上它给了100 ...
nico

然后我不知道为什么。GNU时间应该使用syscall时间,该时间使用sysconf(_SC_CLK_TCK)转换为秒。
卢卡斯索瓦

FWIW当你说“庆典time”,我想你的意思是BSD time为使用getrusage
丹尼斯

Answers:


16

经过一些严格的bash代码检查后,我发现bash time使用getrusage()和GNU time使用times()getrusage()由于具有微秒级的分辨率,因此精度更高。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.