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.
中的单调时钟免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3