卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章79422本站已运行4414

去时间和它的两个时钟

去时间和它的两个时钟

要计算go中的时间间隔,您可以使用

start := time.Now()
// long time consuming task
duration := time.Since(start)

但是你知道吗,go 中的 time 包实际上有两个时间,而 time.since() 实际上只测量处理时间(单调时钟),而不是真实时间(挂钟)?

例如,如果任务很长,长达一整夜,并且您的计算机进入睡眠状态。然后早上你可能会过来看看,持续时间只有4个小时,而总共已经过去了10个小时。

go 中的时间包指出

操作系统提供了“挂钟”(会因时钟同步而发生变化)和“单调时钟”(不会发生变化)。一般规则是,挂钟用于报时,单调钟用于测量时间。

在上面的示例中,它真正告诉您的是,您的程序主动运行了 4 个小时,但计算机休眠了 6 个小时,因此您总共等待了 10 个小时。如果电脑没有休眠的话,4个小时就搞定了。

那么如果你想测量wall time该怎么办呢?您可以使用 round(0) 函数。 t = t.round(0) 将删除 t 中的单调时钟。

卓越飞翔博客
上一篇: 如何使用 Golang 函数遍历稀疏的数据结构?
下一篇: 返回列表
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏