运行Go Benchmark时出现奇怪的输出

问题描述 投票:0回答:1

我正在尝试为Go中的简单echo程序编写基准函数(练习1.3来自“The Go Programming Language”一书)。这是代码:

package echo

import "testing"

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

当我运行go test -bench=.时,输出是这样的:

PASS
BenchmarkEcho1-4    -test.bench=Echo1
-test.bench=Echo1
-test.bench=Echo1
-test.bench=Echo1
[...]
-test.bench=Echo1
-test.bench=Echo1
-test.bench=Echo1
-test.bench=Echo1
 1000000          1358 ns/op
ok      gopl.io/ch1/exercise1.3/echo    1.377s

第一行和最后一行之间有很多-test.bench=Echo1。为什么会这样?我该怎么做才能省略这些行?

go benchmarking
1个回答
2
投票

你明白b.N有一个非常大的价值,因此Echo1被执行了很多次?唯一的解释是Echo1正在打印您正在看到的文本。

你的Echo1()函数可能包含这样的东西:

var s string
for i := 1; i < len(os.Args); i++ {
    s += os.Args[i]
}
fmt.Println(s)
© www.soinside.com 2019 - 2024. All rights reserved.