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

I'd like to make a small contribution the golang and need to run the benchmarks, e.g. for encoding/json.

All my attempts are failed (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 .

So how would I exclusively test encoding/json?

If this is a fresh checkout of the go source tree, after bootstrapping (i.e. running all.bash), go under go/src/ and run

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

Or you can run it against the installed version the same way by going under /usr/local/go/src.

If you're planning to submit a performance enhancement, they'll want you to have before/after benchmarks comparisons. So run the benchmarks 10-20 times before and after, and compare the results using the benchstat tool.

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

I believe this is due to Go modules, but what worked for me was to execute from within the stdlib:

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