{"title":"Golang 代码优化:使用 time.Since() 计算时间间隔并优化 time.Sleep() 调用", "description":"本文提供一个 Golang 代码优化示例,使用 time.Since() 函数计算时间间隔,并优化 time.Sleep() 的调用,避免不必要的等待。", "keywords":"Golang, 代码优化, time.Since(), time.Sleep(), 时间间隔, 性能优化", "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.Since(s_time)
			sleepTime := frameDuration*time.Microsecond - sTime
			if sleepTime > 0 {
				time.Sleep(sleepTime)
			}
			sumTime = sumTime + frameDuration*time.Microsecond
			logs.Info("sTime: %v, sleepTime: %v", sTime, sleepTime)
		}
	}

修改说明:

  1. sTime的计算方式修改为sTime = time.Since(s_time),使用time.Since函数来计算时间间隔。
  2. time.Sleep(frameDuration*time.Microsecond - sTime)修改为sleepTime := frameDuration*time.Microsecond - sTime,计算实际需要等待的时间。
  3. 添加条件判断if sleepTime > 0,仅在需要等待的时间大于0时才调用time.Sleep函数进行等待。
Golang 代码优化:使用 time.Since() 计算时间间隔并优化 time.Sleep() 调用

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

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