shell 脚本中 usecs 中的循环/命令所花费的时间

问题描述 投票:0回答:1

我需要测量我的 shell 脚本中 usecs 命令所花费的时间

start_time ;
Command1;
command2;
end_time;

time_taken = end_time -start_Time;

我正在查看时间命令,但不确定如何在 usecs 中捕获并减去结束和开始时间。有人可以帮忙.

bash shell unix scripting unix-timestamp
1个回答
1
投票

在使用之前: 考虑一下您是否真的需要微秒精度。 Shell 不是为编写高性能代码而设计的,因此对它们进行精确计时似乎有些奇怪。我只能想到一个有效的用例:测量纯 bash 语句/内置函数的性能(无需修改其源代码、分析器等)。对于这种情况,还请记住重复测量 10,000 次左右,以确保它们不受系统噪声的影响。此外,您还可以测量空脚本并从您的脚本中减去它的测量值。


使用 bash 5 或更高版本,您可以使用内置变量

EPOCHREALTIME
,它始终包含当前 unixtime(以秒为单位),小数部分精确到 µs。由于小数部分有固定的小数位数,您可以简单地删除
.
以将其转换为µs。

start_time=$EPOCHREALTIME
echo "execute some commands here"
end_time=$EPOCHREALTIME

(( time_taken = ${end_time/./} - ${start_time/./} ))
declare -p time_taken

如果你真的需要它用于旧的 bash 版本(例如 mac OS 的古老 bash 3),你必须编写自己的内置函数(如果你愿意的话,基本上是一个 bash 插件)和

enable
它。查看bash 的源代码。它带有一些用户编写的内置示例。

© www.soinside.com 2019 - 2024. All rights reserved.