这篇文章主要介绍了Go语言如何获取函数执行时间的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言如何获取函数执行时间文章都会有所收获,下面我们一起来看看吧。
创新互联公司专注于企业成都全网营销、网站重做改版、碌曲网站定制设计、自适应品牌网站建设、HTML5、商城网站建设、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为碌曲等各大城市提供网站开发制作服务。
在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语言如何获取函数执行时间”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。