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

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

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

基准测试以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 }

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

2 终端输入命令进行golang基准测试

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

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

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

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

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

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

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

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

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

3 VScode测试进行golang基准测试

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

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

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

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

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

08-04 01:44