for high-concurrency scenarios, as well as the problems existing in the sync.Map and built-in maps based on sync.RWMutex in high-concurrency scenarios. • The ByteDance programming language team can achieve an implementation that can be at least 10 times faster than sync.Map in typical cases (1% Delete, 9% Store, 90% Load) - see: gophercon/2024-talks Building a High-Performance Concurrent Map in Go - see: the session's slide
is faster. • For Mixed read-write cases, read-write mutex map is faster. • sync.Map is designed to solve the problem known as cache contention. ◦ see: GopherCon 2017 - Lightning Talk: Bryan C Mills - An overview of sync.Map via Go: A Documentary
(multiple read-write mutex maps) • Achieved a 2x performance improvement by reducing the locked regions for each write operation with the upgrade. • Try one item per sub-map!
golang/go · GitHub ◦ Opened on Aug 30, 2022 ◦ The ByteDance Programming Language Team suggests using SwissTable to replace the current hashmap implementation in the Go runtime. ◦ SwissTable is already the default in Abseil and Rust. ▪ The new implementation combines ideas from these and optimizations from Go’s original hashmap. ◦ Motivations ▪ To improve hashmap performance, as current Go services at ByteDance consume around 4% of CPU on hashmap operations. • The CPU usage for mapassign and mapaccess operations is almost 1:1, highlighting the need for improving both insertion and access performance. ▪ To support dynamic adjustments to hashmap capacity to handle burst traffic efficiently and reduce memory pressure after elements are removed.
golang/go · GitHub ◦ The milestone has not set yet. ◦ We can see how swissmap works as a experimental change by setting GOEXPERIMENT=swissmap in the environment when invoking the go tool. ▪ https://groups.google.com/g/golang-nuts/c/lXnFDLSin5Y/m/VKmQh0GRBgAJ ▪ https://go-review.googlesource.com/q/%2354766 ▪ https://cs.opensource.google/search?q=%2F%2Fgo:build%20goexperiment.swissmap& ss=go ◦ c.f. Compiler office hours 2022-12-19 ▪ A prototype of a Swiss table implementation is being developed, with ongoing discussions and issue tracking. ◦ c.f. GitHub - cockroachdb/swiss: Go port of Google's Swiss Table hash table
Go contributors to gather together, discuss issues, and get face time with some of the Go Team and project contributors who can attend. This event is by invitation only. ◦ golang-dev: GopherCon 2024 Go team events. • The style of the session is an unconference. ◦ No pre-planned agenda ◦ Participant-led sessions ◦ Flexible structure ◦ Open discussions and exchange of ideas. ◦ Self-organization ◦ see: https://en.wikipedia.org/wiki/Unconference
toil & issue handling ◦ Improving contributor experience ▪ How to start contributing? ▪ Is there a good guide for onboarding new contributors? Or new issue reports? ▪ How can we keep up with the proposals that many developers are interested in? ◦ Language Changes ◦ Go toolchain • Meeting note ◦ 2024-07-08 Notes from Go Contributor Summit at GopherCon 2024
Absorb a large amount of various input in a short time. ◦ Skipmap, SwissTable ◦ Generics, Iterator, etc ◦ Go Community • Contribute to the Go community by continuously learning, sharing, and applying knowledge as a larger scale. ◦ Don’t worry about the size and impact! Just start doing it!