Golang 代码修复:精确到纳秒的时间差计算
{"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。
原文地址: https://www.cveoy.top/t/topic/p2xj 著作权归作者所有。请勿转载和采集!