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

时间:2014-10-20 13:12:41

标签: macos shell

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

2 个答案:

答案 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 answerthis 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))