如何在 Golang 中測量執行時間?


Go 中,我們有一個名為 time 的包,它存在於 Go 的標準庫中。這個 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

更新於: 2022年2月21日

5K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告