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