2 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
你的代碼沒有任何問題。在 Windows 上,系統(tǒng)時(shí)間通常每隔 10-15 毫秒左右更新一次,這意味著如果您在此期間查詢當(dāng)前時(shí)間兩次,您將得到相同的值。
您的操作有時(shí)會(huì)產(chǎn)生t = 2997600ns = 3ms
,這可以解釋這一點(diǎn)。歸咎于Windows。

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
time.Now()
Go 1.16 中改進(jìn)了 Windows 下的分辨率,
計(jì)時(shí)器分辨率現(xiàn)在應(yīng)約為 500 納秒。
測試程序:
package main
import (
? ? "fmt"
? ? "time"
)
func timediff() int64 {
? ? t0 := time.Now().UnixNano()
? ? for {
? ? ? ? t := time.Now().UnixNano()
? ? ? ? if t != t0 {
? ? ? ? ? ? return t - t0
? ? ? ? }
? ? }
}
func main() {
? ? var ds []int64
? ? for i := 0; i < 10; i++ {
? ? ? ? ds = append(ds, timediff())
? ? }
? ? fmt.Printf("%v nanoseconds\n", ds)
}
測試輸出:
[527400 39200 8400 528900 17000 16900 8300 506300 9700 34100] nanoseconds
- 2 回答
- 0 關(guān)注
- 166 瀏覽
添加回答
舉報(bào)