Go语言进阶篇,单元测试、基准测试的性能测试、内存占用测试

在go语言中的单元测试比较有意思,比如测试一个函数是很方便的,只需要将文件名修改为_test.go这样的后缀即可,我们新建一个目录xxx,然后新建xxx_test.go文件,当然这个xxx的名字你可以按照功能来命名,如下:

单元测试

xxx_test.go

package xxx
 
import (
	"fmt"
	"testing"
)
 
func Hello(s string) string {
	return "Hello " + s
}
 
func TestHello(t *testing.T) {
	fmt.Println(Hello("寅恪光潜"))
}

其中package在前面的文章,我一般建议大家使用的是目录名,同一目录下面的go文件的包名就统一定义。

这个TestHello就是测试Hello函数的意思,命令行进入这个xxx目录,然后输入:

C:\Users\Tony\xxx>go test
Hello 寅恪光潜
PASS
ok      _/C_/Users/Tony/xxx     0.228s

通过测试,用时0.228s,如果是用vscode,将自动在TestHello上面出现 run test | debug test,然后我们可以直接点击它们进行测试即可,如下图:

Go语言进阶篇,单元测试、基准测试的性能测试、内存占用测试_第1张图片

基准测试

会了前面的单元测试,对于基准测试就比较简单了,我们来测试下加法在你的电脑上的性能如何?

func Benchmark_Add(b *testing.B) {
	var n int
	for i := 0; i < b.N; i++ {
		n++
	}
}

命令行使用如下命令:

C:\Users\Tony\xxx>go test -v -bench=. -benchtime=5s xxx_test.go
goos: windows
goarch: amd64
cpu: Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
Benchmark_Add
Benchmark_Add-4         1000000000               0.2830 ns/op
PASS
ok      command-line-arguments  0.556s 

其中benchtime=5s是自定义测试时间5秒,我们可以看到在什么环境下的性能,计算了多少次,每次操作需要耗时多少。
当然也可以在vscode里面直接点击 run benchmark | debug benchmark 如下图: 

Go语言进阶篇,单元测试、基准测试的性能测试、内存占用测试_第2张图片

内存测试

对于一些操作,我们想测试其占用内存的情况,如下:

func Benchmark_Alloc(b *testing.B) {
	for i := 0; i < b.N; i++ {
		fmt.Sprintf("%d ", i)
	}
}

C:\Users\Tony\xxx>go test -v -bench=Alloc -benchmem xxx_test.go
goos: windows
goarch: amd64
cpu: Intel(R) Core(TM) i5-7500 CPU @ 3.40GHz
Benchmark_Alloc
Benchmark_Alloc-4       11920632                97.68 ns/op           17 B/op          1 allocs/op
PASS
ok      command-line-arguments  1.510s

计算次数:11920632,每次操作耗时97.68 ns,然后就是每次操作需要占17个字节
同样的在vscode里面,直接点击 run benchmark | debug benchmark 即可,如下图:

Go语言进阶篇,单元测试、基准测试的性能测试、内存占用测试_第3张图片

有兴趣的伙伴,也可以加入我们的社区,交流讨论:https://bbs.csdn.net/forums/gogogo

一起学习进步,成为技术达人!

你可能感兴趣的:(Golang,_test.go,Benchmark_Alloc,go,单元测试,go,test,go基准测试)