如何在 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
廣告