{"title":"Golang 代码修复:精确到纳秒的时间差计算", "description":"本文展示如何使用 Golang 代码修复时间差计算问题,实现精确到纳秒的时间差计算。", "keywords":"Golang, 时间差, 纳秒, time.Duration, time.Until", "content":"请使用以下修复的代码:

start_time := time.Now()
var sumTime time.Duration = 0
var sTime time.Duration = 1000

Loop:
	for i := 0; i < len(frames); i++ {
		frame := make([]float32, 61)
		s_time := time.Now()
		for j := 0; j < 51; j++ {
			//if j == 1 || j == 4 || j == 11 || j == 8 || j == 9 || j == 10 {
			//		if frames[i][j] != 0 {
			//			frames[i][j] = 0
			//		}
			//}
			frame[j] = float32(frames[i][j]) / coefl
		}
		select {
		case <-sig:
			logs.Info("%s, recv quit sig, quit now", commonInfo)
			finish = false
			break Loop
		default:
			data := MakeBSFrame(frame)
			var nsent = 0
			for nsent < len(data) {
				n, err := socket.Write(data[nsent:])
				if err != nil {
					fmt.Println("send, err =", err)
				}
				nsent += n
			}
			//time.Sleep(16*time.Millisecond + 176*time.Microsecond)
			sTime = time.Duration(time.Until(s_time).Nanoseconds())
			time.Sleep(frameDuration*time.Microsecond - sTime)
			sumTime += frameDuration * time.Microsecond
			logs.Info("sTime: %v, frameDuration*time.Microsecond - sTime: %v", sTime, frameDuration*time.Microsecond-sTime)
		}
	}

修复的代码将sTime的类型更改为time.Duration,并使用time.Until函数获取时间差并将其转换为纳秒。另外,将sumTime的累加操作更改为sumTime += frameDuration * time.Microsecond

Golang 代码修复:精确到纳秒的时间差计算

原文地址: https://www.cveoy.top/t/topic/p2xj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录