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 的一部分。