为了账号安全,请及时绑定邮箱和手机立即绑定

基准测试函数名称后面的“-6”是什么意思?

基准测试函数名称后面的“-6”是什么意思?

Go
jeck猫 2022-09-12 21:04:30
我有一个go测试文件,我在其中编写了一个基准测试函数,如下所示:func BenchmarkStuff(b *testing.B) {    for i := 0; i < b.N; i++ {        stuff()    }}当我用 运行这个时,我得到这个:go test -benchtime 1xBenchmarkStuff-6               1     847751900 ns/op这是什么意思?这似乎不必要地隐晦。-6
查看完整描述

1 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

它表示用于运行基准测试的CPU数量 - 因此,在您的情况下。6


编辑:


Go 网站上似乎没有正式记录 Benchmark 名称格式,但您可以在标准库源代码中看到名称的制定方式:这里和这里:


runtime.GOMAXPROCS(procs)

benchName := benchmarkName(b.name, procs)


func benchmarkName(name string, n int) string {

    if n != 1 {

        return fmt.Sprintf("%s-%d", name, n)

    }

    return name

}

仅供参考:从命令行文档:go help


go help testflag

    -cpu 1,2,4

        Specify a list of GOMAXPROCS values for which the tests or

        benchmarks should be executed. The default is the current value

        of GOMAXPROCS.

因此,如果您想强制基准测试使用较少数量的CPU,请使用env var:GOMAXPROCS


$ GOMAXPROCS=2  go test -bench=.


...


BenchmarkStuff-2    1000000000           0.2642 ns/op

或者,您可以对多个 CPU 内核设置进行基准测试,如下所示:


$ go test -bench=. -cpu=1,2,4


...


BenchmarkStuff      1000000000           0.2516 ns/op

BenchmarkStuff-2    1000000000           0.2531 ns/op

BenchmarkStuff-4    1000000000           0.2488 ns/op


查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信