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

其他教程   发布日期:2023年06月08日   浏览次数:458

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

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

使用time.Since计算执行时间

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

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

  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func test() {
  7. start := time.Now() // 获取当前时间
  8. sum := 0
  9. for i := 0; i < 100000000; i++ {
  10. sum++
  11. }
  12. elapsed := time.Since(start)
  13. fmt.Println("该函数执行完成耗时:", elapsed)
  14. }
  15. func main() {
  16. test()
  17. }

运行结果如下所示:

  1. package main
  2. import (
  3. "fmt"
  4. "time"
  5. )
  6. func test() {
  7. start := time.Now() // 获取当前时间
  8. sum := 0
  9. for i := 0; i < 100000000; i++ {
  10. sum++
  11. }
  12. elapsed := time.Now().Sub(start)
  13. fmt.Println("该函数执行完成耗时:", elapsed)
  14. }
  15. func main() {
  16. test()
  17. }

运行结果如下所示:

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

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

src ime ime.go 923:6

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

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

以上就是Go语言如何获取函数执行时间的详细内容,更多关于Go语言如何获取函数执行时间的资料请关注九品源码其它相关文章!