2 回答
TA貢獻1876條經驗 獲得超5個贊
你的代碼沒有任何問題。在 Windows 上,系統時間通常每隔 10-15 毫秒左右更新一次,這意味著如果您在此期間查詢當前時間兩次,您將得到相同的值。
您的操作有時會產生t = 2997600ns = 3ms,這可以解釋這一點。歸咎于Windows。
TA貢獻1816條經驗 獲得超4個贊
time.Now()Go 1.16 中改進了 Windows 下的分辨率,
計時器分辨率現在應約為 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 關注
- 181 瀏覽
添加回答
舉報
