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 |
[email protected] |
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) |
有一个基准测试运行程序,它自动下载、构建和运行这些基准测试,使用各种(用户定义的)配置。使用perflock可以在一定程度上降低 Linux 上的基准测试噪音。
已经提出了一些建议,但到目前为止,这些建议都未能通过(由于获取、构建或噪音问题)
简短名称 | 备注 | 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的一部分。