想要获取计算某个任务从开始到结束的运行时间,我们可以使用time包中的Slice函数
start := time.Now() // 获取当前时间
sum := 0
for i := 0; i < 100000000; i++ {
sum++
}
elapsed := time.Since(start)
我们执行100000000次的加操作,time.Now 获取当前的时间, time.Since可以计算出一个事件戳到当前的时间差。
运行结果如下:
该函数执行完成耗时: 39.8933ms
使用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()
等。