如何在 Mac OS X 下以毫秒为单位获取 Bash 执行时间?

pac*_*erg 14 unix bash macos

我已经检查过这个,但是提供的解决方案对我不起作用。

使用 date 我可以获得以秒为单位的执行时间:

T="$(date +%s)"
#some work here
T="$(($(date +%s)-T))"
echo "execution time (secs) ${T}"
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试这样做时:

T="$(date +%s%N)"
#some work here
T="$(($(date +%s%N)-T))"
Run Code Online (Sandbox Code Playgroud)

将 %N(如上)添加到日期以获得纳秒精度我得到以下错误:-bash: 1369320760N: value too great for base (error token is "1369320760N")

有谁知道如何在 Mac OS X 下使用 bash 测量以毫秒为单位的执行时间?

gle*_*man 16

由于 OSX 是一个 BSD-ish 系统,它的 strftime 库没有%Nhttp://www.freebsd.org/cgi/man.cgi?query=date

bash 内置time命令是否提供了您需要的信息?

time some work here
Run Code Online (Sandbox Code Playgroud)

  • 感谢您说清楚,时间完美运行并输出三个结果,但我需要专门处理初始和最终时间。 (2认同)

hpa*_*avc 13

如果我需要毫秒并且 BSD 不支持日期,我会走这条路 +%s%N

perl -MTime::HiRes -e 'printf("%.0f\n",Time::HiRes::time()*1000)'
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您安装,coreutils您可以date通过编写gdate.

coreutils 可用于 Homebrew : brew install coreutils


dem*_*ure 3

echo $(($(date +%s%N)/1000000))

这将从纳秒转换为毫秒。

来自@mpy,date +%s.%N有效。

linux 和 OS X 之间的输出是不同的:
linux: 1369322592.573787111
OS X:1369322610.N