第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么 time.Now().UnixNano() 在 IO 操作后返回相同的結(jié)果?

為什么 time.Now().UnixNano() 在 IO 操作后返回相同的結(jié)果?

Go
幕布斯7119047 2023-07-10 14:23:57
我曾經(jīng)time.Now().UnixNano()計(jì)算代碼某些部分的執(zhí)行時(shí)間,但我發(fā)現(xiàn)了一件有趣的事情。有時(shí) IO 操作后經(jīng)過的時(shí)間為零!它出什么問題了?代碼在Go 1.11中運(yùn)行,并使用標(biāo)準(zhǔn)庫"time"。Redis 庫是"github.com/mediocregopher/radix.v2/redis". redis服務(wù)器版本是3.2。我在 Windows 上使用 VSCode 編輯器運(yùn)行它。isGatherTimeStat = falseif rand.Intn(100) < globalConfig.TimeStatProbability { // Here I set TimeStatProbability 100    isGatherTimeStat = true}if isGatherTimeStat {    timestampNano = time.Now()}globalLogger.Info("time %d", time.Now().UnixNano())resp := t.redisConn.Cmd("llen", "log_system")globalLogger.Info("time %d", time.Now().UnixNano())if isGatherTimeStat {    currentTimeStat.time = time.Since(timestampNano).Nanoseconds()    currentTimeStat.name = "redis_llen"    globalLogger.Info("redis_llen time sub == %d", currentTimeStat.time)    select {    case t.chTimeStat <- currentTimeStat:    default:    }}以下是一些日志:[INFO ][2019-07-31][14:47:53] time 1564555673269444200[INFO ][2019-07-31][14:47:53] time 1564555673269444200[INFO ][2019-07-31][14:47:53] redis_llen time sub == 0[INFO ][2019-07-31][14:47:58] time 1564555678267691700[INFO ][2019-07-31][14:47:58] time 1564555678270689300[INFO ][2019-07-31][14:47:58] redis_llen time sub == 2997600[INFO ][2019-07-31][14:48:03] time 1564555683268195600[INFO ][2019-07-31][14:48:03] time 1564555683268195600[INFO ][2019-07-31][14:48:03] redis_llen time sub == 0[INFO ][2019-07-31][14:48:08] time 1564555688267631100[INFO ][2019-07-31][14:48:08] time 1564555688267631100[INFO ][2019-07-31][14:48:08] redis_llen time sub == 0
查看完整描述

2 回答

?
慕運(yùn)維8079593

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。

查看完整回答
反對(duì) 回復(fù) 2023-07-10
?
繁華開滿天機(jī)

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


查看完整回答
反對(duì) 回復(fù) 2023-07-10
  • 2 回答
  • 0 關(guān)注
  • 166 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)