You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Concurrent Swiss Map is an open-source Go library that provides a high-performance, thread-safe generic concurrent hash map implementation designed to handle concurrent access efficiently. It's built with a focus on simplicity, speed, and reliability, making it a solid choice for scenarios where concurrent access to a hash map is crucial.
Uses dolthub/swiss map implementation under the hood.
Installation
Supports 1.18+ Go versions because of Go Generics
go get github.com/mhmtszr/concurrent-swiss-map
Usage
New functions will be added soon...
package main
import (
"hash/fnv"
csmap "github.com/mhmtszr/concurrent-swiss-map"
)
funcmain() {
myMap:=csmap.New[string, int](
// set the number of map shards. the default value is 32.
csmap.WithShardCount[string, int](32),
// if don't set custom hasher, use the built-in maphash.
csmap.WithCustomHasher[string, int](func(keystring) uint64 {
hash:=fnv.New64a()
hash.Write([]byte(key))
returnhash.Sum64()
}),
// set the total capacity, every shard map has total capacity/shard count capacity. the default value is 0.
csmap.WithSize[string, int](1000),
)
key:="swiss-map"myMap.Store(key, 10)
val, ok:=myMap.Load(key)
println("load val:", val, "exists:", ok)
deleted:=myMap.Delete(key)
println("deleted:", deleted)
ok=myMap.Has(key)
println("has:", ok)
empty:=myMap.IsEmpty()
println("empty:", empty)
myMap.SetIfAbsent(key, 11)
myMap.Range(func(keystring, valueint) (stopbool) {
println("range:", key, value)
returntrue
})
count:=myMap.Count()
println("count:", count)
// Output:// load val: 10 exists: true// deleted: true// has: false// empty: true// range: swiss-map 11// count: 1
}
Basic Architecture
Benchmark Test
Benchmark was made on:
Apple M1 Max
32 GB memory
Benchmark test results can be obtained by running this file on local computers.
Benchmark Results
Memory usage of the concurrent swiss map is better than other map implementations in all checked test scenarios.
In high concurrent systems, the concurrent swiss map is faster, but in systems containing few concurrent operations, it works similarly to RWMutexMap.
About
A high-performance, thread-safe generic concurrent hash map implementation with Swiss Map.