Go Wiki: ベンチマーク

これらは、Goコア(コンパイラ、ランタイム、ガーベージコレクタ、ライブラリ)への変更の影響を測定するために、コミュニティから収集されたベンチマークです。これらは以下の特性を持つべきです。

  • 重要であること。誰かが、おそらく金銭的な意味で、それがうまく実行されることを気にしていること。
  • go-gettableであり、ベンチマークのビルドにカスタマイズされた手順を必要としないこと。
  • go test -bench ... の下で実行されること。
  • 比較的迅速に実行され、理想的には1回の「実行」が1秒未満で完了すること(おそらく、より長時間実行されるベンチマークの別のセットがあるべきです)。
  • そのタイミングが不必要にノイズが多くないこと。
  • Dockerやrktコンテナのような制限された環境でクリーンに実行されること。
  • リストにある他のベンチマークと不必要に重複しないこと。Goの超越関数に関する10個のマイクロベンチマークは必要ありません。

これらのベンチマークは時間とともに変化しますが、それは問題ありません。 これらの意図された用途は、提案された変更のパフォーマンステストです。幾何平均は改善されたか、実質的に悪化したベンチマークはあったか?

各ベンチマークの情報には(または含めるべき)以下が含まれます。

  • ベンチマークの短い名前
  • ベンチマークを go get するためのパス
  • ノイズが多く、長時間実行され、または冗長である可能性のある個々のベンチマークを除外するためのベンチマークスイートの正規表現
  • (理想的には)ベンチマークに関する質問の連絡担当者
短い名前 備考 go getパス ベンチマークの正規表現 連絡先
ajstark_deck_generate github.com/ajstarks/deck/generate Benchmark(Polygon|Arc)
benhoyt_goawk github.com/benhoyt/goawk/interp BenchmarkR
bindata github.com/kevinburke/go-bindata Benchmark
capnproto2 zombiezen.com/go/capnproto2/ Benchmark(TextMovementBetweenSegments|Growth_MultiSegment)
cespare_mph github.com/cespare/mph BenchmarkBuild
cespare_xxhash github.com/cespare/xxhash BenchmarkHashes/xxhash-string,n=10_MB
ericlagergren_decimal github.com/ericlagergren/decimal/benchmarks BenchmarkPi_decimal_Go_9
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
ethereum_trie github.com/ethereum/go-ethereum/trie Benchmark
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
gtank_blake2s github.com/gtank/blake2s BenchmarkHash8K
gtank_ed25519 github.com/gtank/ed25519 Benchmark(IsOnCurve|ScalarMult)
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/testing BenchmarkEncodeCodecFromInternalProtobuf
k8s_schedulercache k8s.io/kubernetes/pkg/scheduler/cache BenchmarkList1kNodes30kPods
minio github.com/minio/minio/cmd BenchmarkGetObject5MbFS
nelsam_gxui_interval github.com/nelsam/gxui/interval Benchmark
pilosa_bitmaps roaring/ サブディレクトリ内のベンチマーク github.com/pilosa/pilosa BenchmarkBitmap_IntersectionCount jaffee@pilosa.com
semver github.com/Masterminds/semver BenchmarkValidateVersionTildeFail
spexs2 github.com/egonelbre/spexs2/_benchmark/ BenchmarkRun/10k/1
uber_zap go.uber.org/zap/benchmarks BenchmarkAddingFields/(Zap.Sugar|^[ais])
uuid github.com/satori/go.uuid/ Benchmark(NewV5|MarshalToString)

様々な(ユーザー定義の)構成の下でこれらのベンチマークのダウンロード、ビルド、実行を自動化するベンチマークランナーがあります。Linuxでのベンチマークノイズはperflockである程度軽減できます。

いくつか提案されましたが、これまでのところ(取得、ビルド、またはノイズの問題により)採用されていません。

短い名前 備考 go getパス ベンチマークの正規表現 連絡先
eolian_dsp buddin.us/eolian/dsp Benchmark
ethereum_whisperv5 github.com/ethereum/go-ethereum/whisper/whisperv5 Benchmark
kanzi github.com/flanglet/kanzi/go/src/kanzi/benchmark Benchmark

このコンテンツはGo Wikiの一部です。