访问基准测试结果

Spe*_*her 3 benchmarking go

我已经看到 Go 中有一个结构testing.BenchmarkResult可以访问基准测试的结果,但我发现很少的文档或示例可以帮助我使用它。

到目前为止,我只对我的函数进行了这样的基准测试:

func BenchmarkMyFunction(b *testing.B) {
   // call to myFunction
}
Run Code Online (Sandbox Code Playgroud)

然后运行:

go test -bench=".*"
Run Code Online (Sandbox Code Playgroud)

在这里,结果打印到控制台,但我想将它们存储在单独的文件中。我如何使用该BenchmarkResult类型来执行此操作?

Int*_*net 5

例如:

package main

import (
    "fmt"
    "testing"
    "time"
)

func Add(a, b int) int {
    time.Sleep(10 * time.Microsecond) // Just to make the test take some time
    return a + b
}

func BenchAdd(b *testing.B) {
    for i := 0; i < b.N; i++ {
        _ = Add(1, 2)
    }
}

func main() {
    res := testing.Benchmark(BenchAdd)
    fmt.Printf("%s\n%#[1]v\n", res)
}
Run Code Online (Sandbox Code Playgroud)

生产:

  120000         10000 ns/op
testing.BenchmarkResult{N:120000, T:1200000000, Bytes:0, MemAllocs:0x0, MemBytes:0x0, Extra:map[string]float64{}}
Run Code Online (Sandbox Code Playgroud)

游乐场

您可以使用 轻松将这些结果写入文件ioutil.WriteFile带 WriteFile 的游乐场