第一个问题:
-benchmem 输出基准测试的内存分配统计信息。
-benchtime 用于指定基准测试的探索式测试执行时间上限
示例:
$ go test -bench=. word
goos: linux
goarch: amd64
pkg: word
BenchmarkIsPalindrome-4 2000000000 0.00 ns/op
PASS
ok word 0.002s
$ go test -bench=. -benchmem -benchtime 10s word
goos: linux
goarch: amd64
pkg: word
BenchmarkIsPalindrome-4 10000000000 0.00 ns/op 0 B/op 0 allocs/op
PASS
ok word 0.003s
注意输出部分多的那两部分(0 B/op,0 allocs/op)以及执行次数。
第二个问题:
使用 -coverprofile=xxxx.out 输出覆盖率的out文件,使用go tool cover -html=xxxx.out 命令转换成Html的覆盖率测试报告。
覆盖率测试将被测试的代码拷贝一份,在每个语句块中加入bool标识变量,测试结束后统计覆盖率并输出成out文件,因此性能上会有一定的影响。
PS:使用-covermode=count标识参数将插入的标识变量由bool类型转换为计数器,在测试过程中,记录执行次数,用于找出被频繁执行的代码块,方便优化。
展开