当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


GO B.RunParallel用法及代码示例


GO语言"testing"包中"B.RunParallel"类型的用法及代码示例。

用法:

func(b *B) RunParallel(body func(*PB))

RunParallel 并行运行基准测试。它创建多个 goroutine 并在它们之间分配 b.N 次迭代。 goroutine 的数量默认为 GOMAXPROCS。要增加非 CPU 绑定基准测试的并行性,请在 RunParallel RunParallel 通常与 go test -cpu 标志一起使用之前调用 SetParallelism。

body 函数将在每个 goroutine 中运行。它应该设置任何goroutine-local 状态,然后迭代直到 pb.Next 返回 false。它不应该使用 StartTimer StopTimer 或 ResetTimer 函数,因为它们具有全局效果。它也不应该调用 Run。

例子:

package main

import (
	"bytes"
	"testing"
	"text/template"
)

func main() {
	// Parallel benchmark for text/template.Template.Execute on a single object.
	testing.Benchmark(func(b *testing.B) {
		templ := template.Must(template.New("test").Parse("Hello, {{.}}!"))
		// RunParallel will create GOMAXPROCS goroutines
		// and distribute work among them.
		b.RunParallel(func(pb *testing.PB) {
			// Each goroutine has its own bytes.Buffer.
			var buf bytes.Buffer
			for pb.Next() {
				// The loop body is executed b.N times total across all goroutines.
				buf.Reset()
				templ.Execute(&buf, "World")
			}
		})
	})
}

相关用法


注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 B.RunParallel。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。