mirror of
https://github.com/golang/go
synced 2024-11-18 15:04:44 -07:00
The Go programming language
43e94ff202
The root block was used as a sentinel. This means we always need to allocate a second block on the heap, even if the set has a few small elements. We now use the root block: it is always the block with the smallest offset. The logic becomes very messy if there is no sentinel; to avoid this we still use a sentinel (a special singleton block) and return it in when appropriate in the first, last, next wrappers. Also adding some benchmarks and making some optimizations: name old time/op new time/op delta Popcount-4 2.18ns ± 1% 2.21ns ± 1% +1.47% InsertProbeSparse_2_10-4 76.2ns ±23% 37.2ns ± 1% -51.21% InsertProbeSparse_10_10-4 240ns ±15% 162ns ± 4% -32.58% InsertProbeSparse_10_1000-4 419ns ± 4% 371ns ±19% -11.43% InsertProbeSparse_100_100-4 2.30µs ± 1% 1.93µs ± 1% -16.08% InsertProbeSparse_100_10000-4 2.12µs ± 3% 2.07µs ± 1% -2.11% UnionDifferenceSparse-4 165µs ±16% 170µs ± 9% ~ UnionDifferenceHashTable-4 310µs ±10% 291µs ±17% ~ AppendTo-4 11.0µs ± 0% 11.0µs ± 0% -0.35% name old alloc/op new alloc/op delta Popcount-4 0.00B ±NaN% 0.00B ±NaN% ~ InsertProbeSparse_2_10-4 64.0B ± 0% 0.0B ±NaN% -100.00% InsertProbeSparse_10_10-4 64.0B ± 0% 0.0B ±NaN% -100.00% InsertProbeSparse_10_1000-4 256B ± 0% 192B ± 0% -25.00% InsertProbeSparse_100_100-4 64.0B ± 0% 0.0B ±NaN% -100.00% InsertProbeSparse_100_10000-4 256B ± 0% 192B ± 0% -25.00% UnionDifferenceSparse-4 59.4kB ± 0% 59.2kB ± 0% -0.32% UnionDifferenceHashTable-4 138kB ± 0% 138kB ± 0% ~ AppendTo-4 0.00B ±NaN% 0.00B ±NaN% ~ name old allocs/op new allocs/op delta Popcount-4 0.00 ±NaN% 0.00 ±NaN% ~ InsertProbeSparse_2_10-4 1.00 ± 0% 0.00 ±NaN% -100.00% InsertProbeSparse_10_10-4 1.00 ± 0% 0.00 ±NaN% -100.00% InsertProbeSparse_10_1000-4 4.00 ± 0% 3.00 ± 0% -25.00% InsertProbeSparse_100_100-4 1.00 ± 0% 0.00 ±NaN% -100.00% InsertProbeSparse_100_10000-4 4.00 ± 0% 3.00 ± 0% -25.00% UnionDifferenceSparse-4 928 ± 0% 925 ± 0% -0.32% UnionDifferenceHashTable-4 271 ± 0% 271 ± 0% ~ AppendTo-4 0.00 ±NaN% 0.00 ±NaN% ~ Fixes golang/go#21311. Change-Id: Ie472a2afa269c21cb33b22ffdac8dd2594b816ac Reviewed-on: https://go-review.googlesource.com/53431 Reviewed-by: Alan Donovan <adonovan@google.com> |
||
---|---|---|
benchmark/parse | ||
blog | ||
cmd | ||
container/intsets | ||
cover | ||
go | ||
godoc | ||
imports | ||
playground | ||
present | ||
refactor | ||
third_party | ||
.gitattributes | ||
.gitignore | ||
AUTHORS | ||
codereview.cfg | ||
CONTRIBUTING.md | ||
CONTRIBUTORS | ||
LICENSE | ||
PATENTS | ||
README |
This subrepository holds the source for various packages and tools that support the Go programming language. Some of the tools, godoc and vet for example, are included in binary Go distributions. Others, including the Go guru and the test coverage tool, can be fetched with "go get". Packages include a type-checker for Go and an implementation of the Static Single Assignment form (SSA) representation for Go programs. To submit changes to this repository, see http://golang.org/doc/contribute.html.