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")
}
})
})
}
相关用法
- GO B.ReportMetric用法及代码示例
- GO Buffer.Bytes用法及代码示例
- GO Buffer.Read用法及代码示例
- GO Buffer.Len用法及代码示例
- GO Buffer用法及代码示例
- GO Buffer.Next用法及代码示例
- GO Buffer.ReadByte用法及代码示例
- GO Base用法及代码示例
- GO Buffer.Cap用法及代码示例
- GO Builder用法及代码示例
- GO ByteOrder用法及代码示例
- GO Buffer.Grow用法及代码示例
- GO BinaryOp用法及代码示例
- GO PutUvarint用法及代码示例
- GO Scanner.Scan用法及代码示例
- GO LeadingZeros32用法及代码示例
- GO NewFromFiles用法及代码示例
- GO Regexp.FindString用法及代码示例
- GO Time.Sub用法及代码示例
- GO Regexp.FindAllIndex用法及代码示例
注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 B.RunParallel。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。