如何对golang标准库的程序包进行基准测试?

时间:2019-09-09 17:58:23

标签: go

我想为golang做出一点贡献,并且需要运行基准测试,例如用于编码/ json。

我所有的尝试均失败(go1.13):

❯ go test -bench encoding/json
build .: cannot find module for path .

❯ go test encoding/json
ok      encoding/json   1.412s

❯ go test -bench std/encoding/json
build .: cannot find module for path .

❯ go test std/encoding/json
# std/encoding/json
package std/encoding/json (test)
        imports internal/testenv: use of internal package internal/testenv not allowed
FAIL    std/encoding/json [setup failed]
FAIL

❯ go test std
ok      archive/tar     (cached)

❯ go test -bench std
build .: cannot find module for path .

那我将如何专门测试编码/ json?

2 个答案:

答案 0 :(得分:2)

如果这是对go源树的全新签出,请在引导(即运行all.bash)后进入go / src /下并运行

 ../bin/go test ./encoding/json -bench=.

或者您可以通过在/ usr / local / go / src下以相同的方式针对已安装的版本运行它。

如果您打算提交性能增强,他们会希望您进行基准测试之前/之后的比较。因此,将基准测试前后运行10到20次,然后使用benchstat工具比较结果。

../bin/go test ./encoding/json -bench=. -count=10 >after

答案 1 :(得分:0)

我认为这归因于Go模块,但是对我有用的是从stdlib中执行:

cd /usr/local/go/src/encoding/json
go test -run='^$' -bench .