Skip to main content
 首页 » 编程设计

衡量Golang代码执行时间

2022年07月19日137myhome

衡量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
阅读延展