BenchmarkLoopsParallel-2 100000 10412 ns/op // 哪个目录下执行go test 累计耗时 ok swap/lib 2.279s 源码包位置:src/testing/benchmark.go testing目录下的文件有 allocs.go helper_test.go quick allocs_test.go helperfuncs_test.go run_example.go benchmark.go internal run_example_js.go benchmark_...
func(t *T)Run(namestring, ffunc(t *T))bool 1)name为子测试的名字,f为子测试函数 2)Run()会阻塞到f执行结束后从返回,且返回值为f的执行结果 3)Run()通过启动goroutine运行f(可通过t.Parallel()设置为并发运行) //并发执行时若仍需共用父测试的后部分代码,需对其进行再次封装(保证都结束时返回) 如...
RunParallel会创建出多个 goroutine,并将 b.N 分配给这些 goroutine 执行,其中 goroutine 数量的默认值为 GOMAXPROCS。用户如果想要增加非 CPU 受限(non-CPU-bound)基准测试的并行性,那么可以在 RunParallel 之前调用SetParallelism(如 SetParallelism(2),则 goroutine 数量为 2*GOMAXPROCS)。RunParallel 通常会与 -...
funcBenchmarkHello(b*testing.B){...// 耗时操作b.ResetTimer()fori:=0;i<b.N;i++{fmt.Sprintf("hello")}} 基准测试-并发性能 使用RunParallel funcBenchmarkParallel(b*testing.B){templ:=template.Must(template.New("test").Parse("Hello, {{.}}!"))b.RunParallel(func(pb*testing.PB){varbu...
3.2 并行Golang benchmark 测试的时候同样可以使用并行的方法去并发测试指定的时间内能执行多少次该方法,其基本语法为: b.RunParallel(func(pb*testing.PB){forpb.Next(){// Write down your method}}) 我们试试将执行比较慢的AllocMutableArray()来并发处理,看看会如何: ...
-run: 执行功能测试函数, 支持正则匹配, 可以选择测试函数或者测试文件来仅测试单个函数或者单个文件 -bench: 执行基准测试函数, 支持正在匹配 -benchtime: 基准测试最大探索时间上限 -parallel: 设置同一个被测试代码包中的功能测试函数的最大并发执行数
funcBenchmarkTemplateParallel(b*testing.B){templ:=template.Must(template.New("test").Parse("Hello, {{.}}!"))b.RunParallel(func(pb*testing.PB){// 每个 goroutine 有属于自己的 bytes.Buffer.varbuf bytes.Bufferforpb.Next(){// 所有 goroutine 一起,循环一共执行 b.N 次buf.Reset()templ.Ex...
BenchmarkLoopsParallel-2 100000 10412 ns/op // 哪个目录下执行go test 累计耗时 ok swap/lib 2.279s 源码包位置:src/testing/benchmark.go testing目录下的文件有 allocs.go helper_test.go quick allocs_test.go helperfuncs_test.go run_example.go ...
} } 四、性能测试 使用testing.B来实现简单的性能测试。 声明变量: var n int const max = 10000 声明函数: func BenchmarkSimple(b *testing.B) { b.RunParallel(func(pb *testing.PB) { for pb.Next() { // do something } }) }
基准测试也可以开启并行测试,需要执行b.RunParallel(func(pb *testing.PB)方法,默认会以逻辑CPU个数来进行并行测试。 个人意见只写并行测试就ok了,如果想非并行可以指定cpu数量为1,例如go test -bench . -cpu 1 func BenchmarkReverseParallel(b *testing.B) { ...