使用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(或您喜欢的脚本语言)来运行具有围绕子流程调用外部的计时功能的流程,您将不会招致成本调用脚本语言只是为了获得当前的时间.有关详细信息,请参阅此答案和此答案.
您可以使用:
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)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           5262 次  |  
        
|   最近记录:  |