func (b *B) RunParallel(body func(*PB))会以并行的方式执行给定的基准测试。
    RunParallel会创建出多个goroutine,并将b.N分配给这些goroutine执行, 其中goroutine数量的默认值为GOMAXPROCS。用户如果想要增加非CPU受限(non-CPU-bound)基准测试的并行性, 那么可以在RunParallel之前调用SetParallelismRunParallel通常会与-cpu标志一同使用。

    1. func BenchmarkSplitParallel(b *testing.B) {
    2. // b.SetParallelism(1) // 设置使用的CPU数
    3. b.RunParallel(func(pb *testing.PB) {
    4. for pb.Next() {
    5. Split("沙河有沙又有河", "沙")
    6. }
    7. })
    8. }

    执行一下基准测试:

    1. split $ go test -bench=.
    2. goos: darwin
    3. goarch: amd64
    4. pkg: github.com/Q1mi/studygo/code_demo/test_demo/split
    5. BenchmarkSplit-8 10000000 131 ns/op
    6. BenchmarkSplitParallel-8 50000000 36.1 ns/op
    7. PASS
    8. ok github.com/Q1mi/studygo/code_demo/test_demo/split 3.308s

    还可以通过在测试命令后添加-cpu参数如go test -bench=. -cpu 1来指定使用的CPU数量。