我们经常有这样一个需求,如果偶发的几个请求会突然变慢,想知道是哪个函数运行导致的变慢,那我们想把这个函数的运行时长打印出来定位问题,那我们可以这样定义一个函数。
func traceRunTime(msg string) func() {
beginTime := time.Now()
return func() {
runTime := (float64)(time.Since(beginTime) / time.Millisecond)
if runTime > 50 {
fmt.Printf("msg:%s,runTime:%.2f", msg, runTime)
}
}
}
之后在我们想观察的函数头加入
func main() {
defer traceRunTime("这是一个慢运行函数")() //注意这里还有对括号
time.Sleep(100 * time.Millisecond)
}
运行效果
msg:这是一个慢运行函数,runTime:100.00
网友评论