Skip to content

Benchmarks

dr2chase edited this page Sep 22, 2017 · 10 revisions

These are benchmarks collected from the community used to measure the effects of changes to the Go core (compiler, runtime, and libraries). They should have the following properties:

  • they matter; someone cares, perhaps in a dollars-and-cents way, that they run well
  • they are go-gettable and don't require customized steps for building the benchmark
  • they run under go test -bench ...
  • they run relatively quickly, ideally a single "run" takes less than a second (there should perhaps be a separate set of longer-running benchmarks)
  • their timings are not gratuitously noisy
  • they run cleanly in a restricted environment, such as a Docker or rkt container
  • they're not gratuitously redundant with other benchmarks already in the list; we don't need ten microbenchmarks of Go transcendental functions

Information for each benchmark includes (or should include):

  • a short name for the benchmark
  • the path to go get the benchmark
  • a regexp for the benchmark suite excluding individual benchmarks that might be noisy, long-running, or redundant
  • (ideally) a contact person for questions about the benchmarks
short name notes go get path benchmark regexp contact
eolian_dsp buddin.us/eolian/dsp Benchmark
ethereum_bitutil github.com/ethereum/go-ethereum/common/bitutil Benchmark(BaseTest2KB|FastTest2KB|Encoding4KBVerySparse)
ethereum_core github.com/ethereum/go-ethereum/core BenchmarkChainRead_full_10k
ethereum_corevm github.com/ethereum/go-ethereum/core/vm BenchmarkOpDiv128
ethereum_ecies github.com/ethereum/go-ethereum/crypto/ecies BenchmarkGenSharedKeyP256
ethereum_ethash github.com/ethereum/go-ethereum/consensus/ethash BenchmarkHashimotoLight
ethereum_sha3 github.com/ethereum/go-ethereum/crypto/sha3 BenchmarkSha3_224_MTU
ethereum_storage github.com/ethereum/go-ethereum/swarm/storage BenchmarkJoin_8
gonum_blas_native gonum.org/v1/gonum/blas/gonum Benchmark(DasumMediumUnitaryInc|Dnrm2MediumPosInc)
gonum_community gonum.org/v1/gonum/graph/community/ BenchmarkLouvainDirectedMultiplex
gonum_lapack_native gonum.org/v1/gonum/lapack/gonum BenchmarkDgeev/Circulant10
gonum_mat gonum.org/v1/gonum/mat Benchmark(MulWorkspaceDense1000Hundredth|ScaleVec10000Inc20)
gonum_path gonum.org/v1/gonum/graph/path/ Benchmark(AStarUndirectedmallWorld_10_2_2_2_Heur|Dominators/nested_if_n256)
gonum_topo gonum.org/v1/gonum/graph/topo/ Benchmark(TarjanSCCGnp_1000_half|TarjanSCCGnp_10_tenth)
gonum_traverse gonum.org/v1/gonum/graph/traverse/ BenchmarkWalkAllBreadthFirstGnp_(10|1000)_tenth
hugo_helpers github.com/gohugoio/hugo/helpers Benchmark(StripHTML|ReaderContains)
hugo_hugolib github.com/gohugoio/hugo/hugolib BenchmarkParsePage
hugo_hugolib_sitebuilding github.com/gohugoio/hugo/hugolib BenchmarkSiteBuilding/YAML,num_pages=10,num_tags=10,tags_per_page=20,shortcodes,render-12
k8s_api k8s.io/kubernetes/pkg/api BenchmarkEncodeCodecFromInternalProtobuf
k8s_schedulercache k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache BenchmarkList1kNodes30kPods
minio github.com/minio/minio/cmd BenchmarkGetObject5MbFS
semver github.com/Masterminds/semver BenchmarkValidateVersionTildeFail
spexs2 github.com/egonelbre/spexs2/_benchmark/ BenchmarkRun/10k/1
uuid github.com/satori/go.uuid/ Benchmark(NewV5|MarshalToString)

A few have been proposed but have so far failed to make the cut (for fetch, build, or noise problems):

short name notes go get path benchmark regexp contact
ethereum_trie github.com/ethereum/go-ethereum/trie Benchmark
ethereum_whisperv5 github.com/ethereum/go-ethereum/whisper/whisperv5 Benchmark
kanzi github.com/flanglet/kanzi/go/src/kanzi/benchmark Benchmark
uber_zap github.com/uber-go/zap/benchmarks Benchmark
Clone this wiki locally