請看代碼,這是一段求素數的代碼,用時間戳的UnixNano()求這段代碼運行所需的時間,發現一個問題:如果v的值為501以下的數,運行結果為0,如果v的值為501時,運行結果就是1000000。是不是納秒時間戳的最小值就是1000000呢,求大佬指教,謝謝~
uj5u.com熱心網友回復:
不是的吧用以下的代碼試試
s := time.Now().UnixNano()
time.Sleep(time.Nanosecond*1) //停1納秒
e := time.Now().UnixNano()
fmt.Printf("%d, %d, %d\n", s, e, e-s)
uj5u.com熱心網友回復:
大佬按你的代碼試了一下,運行結果:
1578287106372698900 1578287106371698900 1000000
無論休眠1納秒還是100w納秒,或者是幾微秒,幾毫秒,只要是100w納秒以內的時間數,運行結果nanosecond都是1000000。是不是我的程式有問題
uj5u.com熱心網友回復:
你是windows系統吧?windows系統好像以100納秒為單位計算https://stackoom.com/question/2pryv/為什么在Windows上time-Duration的納秒值會降到最接近的-的倍數
uj5u.com熱心網友回復:
對,是Windows系統。那可能是系統問題了。100w納秒相當于1納秒,也不算太長,影響不大,以后再涉及到時間問題的話我就注意一下有這么個事兒就行了。非常感謝
uj5u.com熱心網友回復:
應該是100w納秒相當于1毫秒,打錯了??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/105026.html
標籤:go語言
