Go语言如何获取函数执行时间

2023-02-08 22:45:08 9 0
魁首哥

Go语言如何获取函数执行时间

这篇文章主要介绍了Go语言如何获取函数执行时间的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言如何获取函数执行时间文章都会有所收获,下面我们一起来看看吧。

Go语言如何获取函数执行时间

在Go语言中,可以使用time包中的Since()函数来获取函数执行时间。在函数执行之前设置一个起始时间,并在函数运行结束时获取从起始时间到现在的时间间隔,这个时间间隔就是函数的执行时间;而函数执行时间可以使用time.Since()函数计算,语法“time.Since(t)”,会返回从t到现在经过的时间。

使用time.Since计算执行时间

函数的运行时间的长短是衡量这个函数性能的重要指标,特别是在对比和基准测试中,要得到函数的运行时间,最简单的办法就是在函数执行之前设置一个起始时间,并在函数运行结束时获取从起始时间到现在的时间间隔,这个时间间隔就是函数的运行时间。

在Go语言中我们可以使用 time 包中的 Since() 函数来获取函数的运行时间,Go语言官方文档中对 Since() 函数的介绍是这样的。

func Since(t Time) Duration

Since() 函数返回从 t 到现在经过的时间,等价于time.Now().Sub(t)。

示例1:使用 Since() 函数获取函数的运行时间

package mainimport (    "fmt"    "time")func test() {    start := time.Now() // 获取当前时间    sum := 0    for i := 0; i < 100000000; i++ {        sum++    }    elapsed := time.Since(start)    fmt.Println("该函数执行完成耗时:", elapsed)}func main() {    test()}

运行结果如下所示:

该函数执行完成耗时: 39.8933ms

上面我们提到了 time.Now().Sub() 的功能类似于 Since() 函数,想要使用 time.Now().Sub() 获取函数的运行时间只需要把我们上面代码的第 14 行简单修改一下就行。

示例2:使用 time.Now().Sub() 获取函数的运行时间

package mainimport (    "fmt"    "time")func test() {    start := time.Now() // 获取当前时间    sum := 0    for i := 0; i < 100000000; i++ {        sum++    }    elapsed := time.Now().Sub(start)    fmt.Println("该函数执行完成耗时:", elapsed)}func main() {    test()}

运行结果如下所示:

该函数执行完成耗时: 36.8769ms

由于计算机 CPU 及一些其他因素的影响,在获取函数运行时间时每次的结果都有些许不同,属于正常现象。

扩展知识:使用time.Now().Sub()计算时间差

我们只需将time.Since()替换成 time.Now().Sub() 即可,如下:

    start := time.Now() // 获取当前时间    sum := 0    for i := 0; i < 100000000; i++ {        sum++    }    elapsed := time.Now().Sub(start)    fmt.Println(elapsed)

其实time.Since内部调用了Sub函数,我们进入time包看,注释的意思是,Since返回从t开始经过的时间, time.Since 是 time.Now().Sub(t) 的简写方式,

\src\time\time.go 923:6

// Since returns the time elapsed since t.// It is shorthand for time.Now().Sub(t).func Since(t Time) Duration {    var now Time    if t.wall&hasMonotonic != 0 {        // Common case optimization: if t has monotonic time, then Sub will use only it.        now = Time{hasMonotonic, runtimeNano() - startNano, nil}    } else {        now = Now()    }    return now.Sub(t)}

当我们也可以使用 time.Now().Sub(start).Seconds()获取经过多少秒,Hours获取经过的小时数等,对应的也可以简写为time.Since(start).Seconds()、time.Since(start).Seconds()等。

关于“Go语言如何获取函数执行时间”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Go语言如何获取函数执行时间”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道。

收藏
分享
海报
0 条评论
9
上一篇:go语言扩容方法有哪些 下一篇:Angular生命周期执行的顺序是什么

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码