在Golang中访问基准测试的结果

时间:2015-01-20 12:44:22

标签: go benchmarking

我已经看到Golang中有一个结构BenchmarkResult来访问基准测试的结果,但我发现很少的doc / examples来帮助我使用它: http://golang.org/src/testing/benchmark.go?s=5790:6120#L212

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

func BenchmarkMyFunction(b *testing.B) {
   // call to myFunction
}

跑步:

go test -bench=".*"

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

非常感谢

1 个答案:

答案 0 :(得分:3)

例如:

package main

import (
    "fmt"
    "testing"
)

func Add(a, b int) int {
    return a + b
}

func BenchAdd(b *testing.B) {
    _ = Add(1,2)
}

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

产地:

  

2000000000 0.00 ns / op
  testing.BenchmarkResult {N:2000000000,T:0,Bytes:0,MemAllocs:0x0,MemBytes:0x0}

Playground

您可以使用ioutil.WriteFile()轻松将这些结果写入文件。

func WriteFile(filename string, data []byte, perm os.FileMode) error
  

WriteFile将数据写入由filename命名的文件。如果该文件不存在,则WriteFile使用权限perm创建它;否则WriteFile会在写入之前截断它。

Playground