我尝试使用t1=$(date +%s%N)
来获取以纳秒为单位的时间,但我一直在收到此错误:
./script.sh: line 10: 1292460931N: value too great for base (error token is "1292460931N")
我在线查看,似乎你可以使用“time”命令,但是我找不到使用time命令的好例子。任何帮助将不胜感激:)
答案 0 :(得分:5)
您使用的date
命令不支持%N
,因此您的输出字面为1292460931N
。我在Linux上试过它并且它有效,但在FreeBSD上我看到你得到的结果。在shell中运行该date命令,看看是什么。你有可能使用busybox
吗?它的截止日期命令也省略了%N
,但我刚试过的版本给了我1292463535%N
。
答案 1 :(得分:2)
好的,这里有几件事。
首先,不是很多系统都能给你一个实际精确到纳秒的时间。
现在,使用时间,/usr/bin/time
或shell内置(bash:help time
)非常简单。如果您想要的时间是foo1
,那么
$ time foo
将在stderr上将经过的时间作为三行返回
real 0m0.001s
user 0m0.000s
sys 0m0.000s
你可以用任何你喜欢的方式。
如果您想获得更好,更准确的时序,请多次执行该命令。这可以像编写短循环一样简单
time for i in 0 1 2 3 4; do foo; done
将执行foo
五次并给你总时间。你可能想要做5次以上的迭代,所以你可能想要一个计数器和一个while循环等。