這篇文章主要介紹了Go語言如何獲取函數(shù)執(zhí)行時間的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Go語言如何獲取函數(shù)執(zhí)行時間文章都會有所收獲,下面我們一起來看看吧。
創(chuàng)新互聯(lián)公司專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、碌曲網(wǎng)站定制設(shè)計、自適應品牌網(wǎng)站建設(shè)、HTML5、商城網(wǎng)站建設(shè)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設(shè)計等建站業(yè)務,價格優(yōu)惠性價比高,為碌曲等各大城市提供網(wǎng)站開發(fā)制作服務。
在Go語言中,可以使用time包中的Since()函數(shù)來獲取函數(shù)執(zhí)行時間。在函數(shù)執(zhí)行之前設(shè)置一個起始時間,并在函數(shù)運行結(jié)束時獲取從起始時間到現(xiàn)在的時間間隔,這個時間間隔就是函數(shù)的執(zhí)行時間;而函數(shù)執(zhí)行時間可以使用time.Since()函數(shù)計算,語法“time.Since(t)”,會返回從t到現(xiàn)在經(jīng)過的時間。
使用time.Since計算執(zhí)行時間
函數(shù)的運行時間的長短是衡量這個函數(shù)性能的重要指標,特別是在對比和基準測試中,要得到函數(shù)的運行時間,最簡單的辦法就是在函數(shù)執(zhí)行之前設(shè)置一個起始時間,并在函數(shù)運行結(jié)束時獲取從起始時間到現(xiàn)在的時間間隔,這個時間間隔就是函數(shù)的運行時間。
在Go語言中我們可以使用 time 包中的 Since() 函數(shù)來獲取函數(shù)的運行時間,Go語言官方文檔中對 Since() 函數(shù)的介紹是這樣的。
func Since(t Time) Duration
Since() 函數(shù)返回從 t 到現(xiàn)在經(jīng)過的時間,等價于time.Now().Sub(t)。
示例1:使用 Since() 函數(shù)獲取函數(shù)的運行時間
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("該函數(shù)執(zhí)行完成耗時:", elapsed)
}
func main() {
test()
}
運行結(jié)果如下所示:
該函數(shù)執(zhí)行完成耗時: 39.8933ms
上面我們提到了 time.Now().Sub() 的功能類似于 Since() 函數(shù),想要使用 time.Now().Sub() 獲取函數(shù)的運行時間只需要把我們上面代碼的第 14 行簡單修改一下就行。
示例2:使用 time.Now().Sub() 獲取函數(shù)的運行時間
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("該函數(shù)執(zhí)行完成耗時:", elapsed)
}
func main() {
test()
}
運行結(jié)果如下所示:
該函數(shù)執(zhí)行完成耗時: 36.8769ms
由于計算機 CPU 及一些其他因素的影響,在獲取函數(shù)運行時間時每次的結(jié)果都有些許不同,屬于正?,F(xiàn)象。
擴展知識:使用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內(nèi)部調(diào)用了Sub函數(shù),我們進入time包看,注釋的意思是,Since返回從t開始經(jīng)過的時間, 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()獲取經(jīng)過多少秒,Hours獲取經(jīng)過的小時數(shù)等,對應的也可以簡寫為time.Since(start).Seconds()、time.Since(start).Seconds()等。
關(guān)于“Go語言如何獲取函數(shù)執(zhí)行時間”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Go語言如何獲取函數(shù)執(zhí)行時間”知識都有一定的了解,大家如果還想學習更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當前題目:Go語言如何獲取函數(shù)執(zhí)行時間
URL網(wǎng)址:http://chinadenli.net/article32/jiogpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、標簽優(yōu)化、營銷型網(wǎng)站建設(shè)、面包屑導航、品牌網(wǎng)站設(shè)計、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)