Mac OS X Shell脚本测量时间已过去

C. *_*rto 3 macos shell

如何在Mac OS X中测量shell脚本中经过的时间(以毫秒为单位)?

Dro*_*ppy 9

使用time命令(联机帮助页).这比ruby告诉你经过的时间要便宜得多:

$ time a_command
Run Code Online (Sandbox Code Playgroud)

real从命令do(未经测试)中"提取" 时间:

real_time=$(time a_command | grep ^real | awk 'print $2')
Run Code Online (Sandbox Code Playgroud)

(a_command必要时可以在shell函数中)

这将返回以分钟和秒为单位的值,因此如果您希望结果以毫秒为单位,那么使用python(或您喜欢的脚本语言)来运行具有围绕子流程调用外部的计时功能的流程,您将不会招致成本调用脚本语言只是为了获得当前的时间.有关详细信息,请参阅此答案此答案.


Vic*_*don 3

您可以使用:

start_ms=$(ruby -e 'puts (Time.now.to_f * 1000).to_i')
# do some work
end_ms=$(ruby -e 'puts (Time.now.to_f * 1000).to_i')
elapsed_ms=$((end_ms - start_ms))
echo "$elapsed_ms ms passed"
Run Code Online (Sandbox Code Playgroud)

或者仅 shell 内置命令(适用于 bash 和 zsh):

start_ns=$(date +%s%N)
# do some work
end_ns=$(date +%s%N)
elapsed_ms=$(((end_ns - start_ns) / 1000000))
Run Code Online (Sandbox Code Playgroud)