首頁  >  文章  >  後端開發  >  Go語言怎麼取得函數執行時間

Go語言怎麼取得函數執行時間

青灯夜游
青灯夜游原創
2023-01-17 10:23:063092瀏覽

在Go語言中,可以使用time套件中的Since()函數來取得函數執行時間。在函數執行之前設定一個起始時間,並在函數運行結束時取得起始時間到現在的時間間隔,這個時間間隔就是函數的執行時間;而函數執行時間可以使用time.Since()函數計算,語法“time.Since(t)”,會傳回從t到現在經過的時間。

Go語言怎麼取得函數執行時間

本教學操作環境:windows7系統、GO 1.18版本、Dell G3電腦。

使用time.Since計算執行時間

#函數的運行時間的長短是衡量這個函數效能的重要指標,特別是在對比和基準測試中,要得到函數的運行時間,最簡單的辦法就是在函數執行之前設定一個起始時間,並在函數運行結束時取得從起始時間到現在的時間間隔,這個時間間隔就是函數的運行時間。

在Go語言中我們可以使用 time 套件中的 Since() 函數來取得函數的運行時間,Go語言官方文件中對 Since() 函數的介紹是這樣的。

func Since(t Time) Duration

Since() 函數傳回 t 到現在經過的時間,等價於time.Now().Sub(t)。

範例1:使用Since() 函數取得函數的運行時間

package main
import (
    "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 main
import (
    "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語言怎麼取得函數執行時間的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn