亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言如何獲取函數執行時間

發布時間:2023-02-06 11:24:43 來源:億速云 閱讀:122 作者:iii 欄目:編程語言

這篇文章主要介紹了Go語言如何獲取函數執行時間的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Go語言如何獲取函數執行時間文章都會有所收獲,下面我們一起來看看吧。

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

使用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語言如何獲取函數執行時間”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

诸暨市| 肥乡县| 中卫市| 即墨市| 通江县| 宜川县| 九龙县| 揭西县| 丰台区| 西贡区| 五华县| 安远县| 汉源县| 平谷区| 黔西| 南汇区| 南漳县| 甘德县| 香河县| 靖宇县| 阿尔山市| 类乌齐县| 周宁县| 葵青区| 嘉峪关市| 申扎县| 博爱县| 榆林市| 常德市| 鄢陵县| 永吉县| 和林格尔县| 资溪县| 军事| 普宁市| 湖口县| 华亭县| 溆浦县| 东乌| 三明市| 名山县|