gpt4 book ai didi

go - 基准函数名称后的 "-6"是什么意思?

转载 作者:行者123 更新时间:2023-12-04 14:43:53 26 4
gpt4 key购买 nike

我有一个 go 测试文件,我在其中编写了一个基准函数,如下所示:

func BenchmarkStuff(b *testing.B) {
for i := 0; i < b.N; i++ {
stuff()
}
}

当我使用 go test -benchtime 1x 运行它时,我得到了这个:

BenchmarkStuff-6               1     847751900 ns/op

-6 是什么意思?这似乎是不必要的神秘。

最佳答案

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


编辑:

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

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

关于go - 基准函数名称后的 "-6"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68447103/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com