如何在 Golang 中测量执行时间?

go programmingserver side programmingprogramming更新于 2025/5/27 12:52:17

Go 中,Go 标准库中有一个名为 time 的包。这个 time 包包含各种实用函数,可用于计算代码块甚至 Go 中某个函数的执行时间。

最常用的函数是 time.Sleep()、time.Since()time.Now()。在本文中,我们将了解如何使用所有这些函数。

我们首先考虑一个非常基本的示例,我们将在其中使用所有这些函数。

示例 1

考虑下面的代码。

package main
import (
   "fmt"
   "time"
)
func main() {
   fmt.Println("Measuring time in Go")
   start := time.Now()
   for idx := 0; idx < 10; idx++ {
      time.Sleep(751 * time.Millisecond)
   }
   timeElapsed := time.Since(start)
   fmt.Printf("The `for` loop took %s", timeElapsed)
}

在上面的代码中,

  • 我们首先使用 time.Now() 函数,它将提供当时的准确时间,

  • 然后,我们借助 time.Sleep() 函数让程序等待。

  • 最后,为了获取 for 循环的实际时间,我们将 time.Now() 函数得到的结果传递给 time.Since() 函数,即可得到结果。

输出

如果我们在上述代码上运行命令 go run main.go,终端中将出现以下输出。

Measuring time in Go
The `for` loop took 7.512026652s

我们也可以使用不同的模式,其中我们将使用相同的函数以及延迟函数。

示例 2

考虑下面的代码。

package main
import (
   "fmt"
   "time"
)
func timeElapsed() func() {
   start := time.Now()
   return func() {
      timeElapsed := time.Since(start)
      fmt.Println("This function took", timeElapsed, "time")
   }
}
func main() {
   defer timeElapsed()()
   time.Sleep(time.Second * 2)
}

输出

如果我们在上面的代码上运行命令go run main.go,那么我们将在终端中得到以下输出。

This function took 2.000122676s time

相关文章