VScode 中golang 基准测试 go test -bench .

博客园   2023-08-03 18:14:35

目的:基准测试的主要目的是比较不同实现方式之间的性能差异,找出性能瓶颈。

1 准备以_test.go结尾文件和导入testing包

在命名文件时需要让文件必须以_test结尾,在文件中导入testing包。基准测试可以测试一段程序的运行性能及耗费CPU的程度,获得代码内存占用和运行效率的性能数据。Go语言中提供了基准测试框架,使用方法类似于单元测试,使用者无须准备高精度的计时器和各种分析工具,基准测试本身既可以打印出非常标准的测试报告。


(资料图片)

func BenchmarkName(b *testing.B)

基准测试以Benchmark为前缀,需要一个*testing.B类型的参数b,基准测试必须要执行b.N次,这样的测试才有对照性,b.N的值是系统根据实际情况去调整的,从而保证测试的稳定性。

测试代码如下:

1 package main 2  3 import ( 4     "testing" 5     "time" 6 ) 7 func Benchmark_Log(b *testing.B) { 8     for i := 0; i < b.N; i++ { 9         b.Log("hello world")10         time.Sleep(1 * time.Second)11         b.Log("hello world jkjk")12     }13 }
2 终端输入命令进行golang基准测试

(1)go test -bench . 执行项目中所有基准测试文件

在终端输入命令:go test -bench . 可以看到 执行了1次,即为b.N的值。Benchmark_Log2函数平均每次操作花费了1011875500纳秒,Benchmark_Log函数平均每次操作花费了1003084600纳秒。

(2)go test -bench . xxx_test.go, 执行指定基准测试文件,如go test -bench . time_test.go 、go test -bench . time_test.go time2_test.go

(3)go test -bench . -benchtime=10s执行10s

(4)go test -bench . -benchtime=10x执行10次

3 VScode测试进行golang基准测试

点击VScode视图左侧的测试按钮,点击运行按钮下方的运行测试按钮进行基准测试,或者点击module、_test.go文件,基准函数的运行测试按钮。

VScode测试进行golang基准测试的操作与golang单元测试一致,但输出的信息不同。

在进行基准测试的过程中,可以点击取消测试运行按钮取消测试。

最新资讯

猜你喜欢