【发布时间】:2014-10-20 13:12:40
【问题描述】:
如何在 Mac OS X 的 shell 脚本中测量经过的时间(以毫秒为单位)?
【问题讨论】:
如何在 Mac OS X 的 shell 脚本中测量经过的时间(以毫秒为单位)?
【问题讨论】:
使用time 命令 (manpage)。这比调用ruby 只是告诉你经过的时间要便宜得多:
$ time a_command
从命令 do 中“提取”real 时间(未经测试):
real_time=$(time a_command | grep ^real | awk 'print $2')
(如果需要,a_command 可以是一个 shell 函数)
这将以分钟和秒为单位返回值,因此,如果您希望以毫秒为单位的结果,请使用 python(或您最喜欢的脚本语言)在子流程调用外部使用计时函数运行流程,您将不会产生调用脚本语言只是为了获取当前时间的成本。详情请参阅this answer 和this answer。
【讨论】:
你可以使用:
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"
或者只有 shell 内置函数(适用于 bash 和 zsh):
start_ns=$(date +%s%N)
# do some work
end_ns=$(date +%s%N)
elapsed_ms=$(((end_ns - start_ns) / 1000000))
【讨论】: