衡量Golang代码执行时间
实际开发中经常需要衡量代码性能,包括代码片段或业务函数。本文介绍如何衡量Golang代码执行时间,既简洁又实用。
1. 代码片段执行时间
使用time.Now()
和time.Since()
可衡量代码片段的执行时间:
package main
import (
"fmt"
"time"
)
func main() {
fmt.Println("简单衡量 Golang 代码片段执行时间示例")
fmt.Println("")
start := time.Now()
//measuring the durration of the for loop
for index := 0; index < 10; index++ {
time.Sleep(500 * time.Millisecond)
}
elapsed := time.Since(start)
fmt.Printf("The `for` loop took %s", elapsed)
}
上面示例中循环迭代10次,每次睡眠500毫秒,模拟执行复杂任务。
输出如下:
简单衡量 Golang 代码片段执行时间示例
The `for` loop took 5.000286s
循环10次,每次500毫秒,总共时间约5秒多。
2. 函数执行时间
为了衡量函数执行时间,我们创建一个专门函数衡量执行时间,与业务代码分离,增加复用性。
在执行任务开始时使用defer
,确保函数执行完毕之前调用衡量执行时间函数。
package main
import (
"fmt"
"time"
)
func timeMeasurement(start time.Time) {
elapsed := time.Since(start)
fmt.Printf("Execution time: %s", elapsed)
}
func workerFunction() {
fmt.Println("Running 'workerFunction' function")
for index := 0; index < 10; index++ {
time.Sleep(500 * time.Millisecond)
}
}
func main() {
fmt.Println("Function time measurement Golang Example")
fmt.Println("")
defer timeMeasurement(time.Now())
workerFunction()
}
当然defer timeMeasurement(time.Now())
也可以放在workerFunction
函数体开头位置,为了不侵入业务代码,我们放在其被执行之前位置。输出如下:
衡量Golang 函数执行时间示例
Running 'workerFunction' function
Execution time: 5.0032861s
3. 总结
本文介绍了Golang衡量执行时间的方法,包括代码片段和函数的执行时间。主要使用defer关键字实现延迟机制,确保执行完成之前进计算执行时间。
本文参考链接:https://blog.csdn.net/neweastsun/article/details/106170736