新聞中心
函數(shù)的運(yùn)行時(shí)間的長短是衡量這個(gè)函數(shù)性能的重要指標(biāo),特別是在對(duì)比和基準(zhǔn)測試中,要得到函數(shù)的運(yùn)行時(shí)間,最簡單的辦法就是在函數(shù)執(zhí)行之前設(shè)置一個(gè)起始時(shí)間,并在函數(shù)運(yùn)行結(jié)束時(shí)獲取從起始時(shí)間到現(xiàn)在的時(shí)間間隔,這個(gè)時(shí)間間隔就是函數(shù)的運(yùn)行時(shí)間。

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作與策劃設(shè)計(jì),安丘網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:安丘等地區(qū)。安丘做網(wǎng)站價(jià)格咨詢:18980820575
在Go語言中我們可以使用 time 包中的 Since() 函數(shù)來獲取函數(shù)的運(yùn)行時(shí)間,Go語言官方文檔中對(duì) Since() 函數(shù)的介紹是這樣的。
func Since(t Time) Duration
Since() 函數(shù)返回從 t 到現(xiàn)在經(jīng)過的時(shí)間,等價(jià)于time.Now().Sub(t)。
【示例】使用 Since() 函數(shù)獲取函數(shù)的運(yùn)行時(shí)間。
package main
import (
"fmt"
"time"
)
func test() {
start := time.Now() // 獲取當(dāng)前時(shí)間
sum := 0
for i := 0; i < 100000000; i++ {
sum++
}
elapsed := time.Since(start)
fmt.Println("該函數(shù)執(zhí)行完成耗時(shí):", elapsed)
}
func main() {
test()
}運(yùn)行結(jié)果如下所示:
該函數(shù)執(zhí)行完成耗時(shí): 39.8933ms
上面我們提到了 time.Now().Sub() 的功能類似于 Since() 函數(shù),想要使用 time.Now().Sub() 獲取函數(shù)的運(yùn)行時(shí)間只需要把我們上面代碼的第 14 行簡單修改一下就行。
【示例 2】使用 time.Now().Sub() 獲取函數(shù)的運(yùn)行時(shí)間。
package main
import (
"fmt"
"time"
)
func test() {
start := time.Now() // 獲取當(dāng)前時(shí)間
sum := 0
for i := 0; i < 100000000; i++ {
sum++
}
elapsed := time.Now().Sub(start)
fmt.Println("該函數(shù)執(zhí)行完成耗時(shí):", elapsed)
}
func main() {
test()
}運(yùn)行結(jié)果如下所示:
該函數(shù)執(zhí)行完成耗時(shí): 36.8769ms
由于計(jì)算機(jī) CPU 及一些其他因素的影響,在獲取函數(shù)運(yùn)行時(shí)間時(shí)每次的結(jié)果都有些許不同,屬于正?,F(xiàn)象。
本文標(biāo)題:創(chuàng)新互聯(lián)GO教程:Go語言計(jì)算函數(shù)執(zhí)行時(shí)間
瀏覽路徑:http://www.dlmjj.cn/article/codiihg.html


咨詢
建站咨詢
