Go Wiki: 效能測試

這些是由社群收集的效能測試,用於衡量 Go 核心(編譯器、執行時、垃圾回收器和庫)更改的影響。它們應具備以下屬性:

  • 它們很重要;有人關心它們執行得是否良好,也許是以金錢衡量的。
  • 它們是可 `go get` 獲取的,並且不需要自定義步驟來構建效能測試。
  • 它們可以在 `go test -bench ...` 下執行。
  • 它們執行相對較快,理想情況下單次“執行”不到一秒(也許應該有一套單獨的、執行時間更長的效能測試)。
  • 它們的計時不會有不必要的噪聲。
  • 它們可以在受限的環境中乾淨地執行,例如 Docker 或 rkt 容器。
  • 它們與其他列表中已有的效能測試沒有不必要的冗餘;我們不需要十個 Go 超越函式微基準測試。

這些效能測試會隨著時間而變化,這是可以接受的。 它們的預期用途是針對擬議的更改進行效能測試;幾何平均值是否更好,是否有任何效能測試變得非常糟糕?

每個效能測試的資訊包括(或應包括):

  • 效能測試的簡短名稱
  • 用於 `go get` 該效能測試的路徑
  • 一個用於效能測試套件的正則表示式,排除可能存在噪聲、執行時間長或冗餘的單個性能測試。
  • (理想情況下)一個用於詢問有關效能測試的聯絡人
簡短名稱 註釋 go get 路徑 效能測試正則表示式 聯絡人
ajstarks_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 的一部分。