如何在Mac OS X中测量shell脚本中经过的时间(以毫秒为单位)?
答案 0 :(得分:8)
使用time
命令(manpage)。这比调用ruby
只是为了告诉你经过的时间要便宜得多:
$ time a_command
从命令do(未经测试)中“提取”real
时间:
real_time=$(time a_command | grep ^real | awk 'print $2')
(如果需要,a_command
可以是shell函数)
这将以分钟和秒为单位返回值,因此如果您希望以毫秒为单位的结果,那么使用python(或您喜欢的脚本语言)在子流程调用的外部运行定时函数的过程,您将不要因为获取当前时间而招致脚本语言 cost 。有关详细信息,请参阅this answer和this answer。
答案 1 :(得分:4)
您可以使用:
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 builtins(在bash和zsh中工作):
start_ns=$(date +%s%N)
# do some work
end_ns=$(date +%s%N)
elapsed_ms=$(((end_ns - start_ns) / 1000000))