Documentation ¶
Overview ¶
Package fastinteger is designed to provide a very primitive implementation of a hash map for unsigned integer keys and values. It is designed to have existence checks and insertions that are faster than Go's native implementation. Like Go's native implementation, FastIntegerHashMap will dynamically grow in size.
Current benchmarks on identical machine against native Go implementation:
BenchmarkInsert-8 10000 131258 ns/op BenchmarkGoMapInsert-8 10000 208787 ns/op BenchmarkExists-8 100000 15820 ns/op BenchmarkGoMapExists-8 100000 16394 ns/op BenchmarkDelete-8 100000 17909 ns/op BenchmarkGoDelete-8 30000 49376 ns/op BenchmarkInsertWithExpand-8 20000 90301 ns/op BenchmarkGoInsertWithExpand-8 10000 142088 ns/op
This performance could be further enhanced by using a better probing technique.
Index ¶
- type FastIntegerHashMap
- func (fi *FastIntegerHashMap) Cap() uint64
- func (fi *FastIntegerHashMap) Delete(key uint64)
- func (fi *FastIntegerHashMap) Exists(key uint64) bool
- func (fi *FastIntegerHashMap) Get(key uint64) (uint64, bool)
- func (fi *FastIntegerHashMap) Len() uint64
- func (fi *FastIntegerHashMap) Set(key, value uint64)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FastIntegerHashMap ¶
type FastIntegerHashMap struct {
// contains filtered or unexported fields
}
FastIntegerHashMap is a simple hashmap to be used with integer only keys. It supports few operations, and is designed primarily for cases where the consumer needs a very simple datastructure to set and check for existence of integer keys over a sparse range.
func New ¶
func New(hint uint64) *FastIntegerHashMap
New returns a new FastIntegerHashMap with a bucket size specified by hint.
func (*FastIntegerHashMap) Cap ¶
func (fi *FastIntegerHashMap) Cap() uint64
Cap returns the capacity of the hashmap.
func (*FastIntegerHashMap) Delete ¶
func (fi *FastIntegerHashMap) Delete(key uint64)
Delete will remove the provided key from the hashmap. If the key cannot be found, this is a no-op.
func (*FastIntegerHashMap) Exists ¶
func (fi *FastIntegerHashMap) Exists(key uint64) bool
Exists will return a bool indicating if the provided key exists in the map.
func (*FastIntegerHashMap) Get ¶
func (fi *FastIntegerHashMap) Get(key uint64) (uint64, bool)
Get returns an item from the map if it exists. Otherwise, returns false for the second argument.
func (*FastIntegerHashMap) Len ¶
func (fi *FastIntegerHashMap) Len() uint64
Len returns the number of items in the hashmap.
func (*FastIntegerHashMap) Set ¶
func (fi *FastIntegerHashMap) Set(key, value uint64)
Set will set the provided key with the provided value.