程序员

如何优雅地打印函数的运行时长

2020-07-06  本文已影响0人  yellowone

我们经常有这样一个需求,如果偶发的几个请求会突然变慢,想知道是哪个函数运行导致的变慢,那我们想把这个函数的运行时长打印出来定位问题,那我们可以这样定义一个函数。

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
上一篇 下一篇

猜你喜欢

热点阅读