Go Wiki:基準測試
這些基準測試是從社群收集而來,用於衡量對 Go 核心(編譯器、執行時期、垃圾回收程式和函式庫)變更的影響。它們應具備下列屬性
- 它們很重要;有人關心,也許是從金錢的角度關心它們運作良好
- 它們是可取得的,而且不需要自訂步驟來建置基準
- 它們在
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 的一部分。