Copyright | (c) Peter Robinson |
---|---|
License | BSD3 (see the file LICENSE) |
Maintainer | Peter Robinson <pwr@lowerbound.io> |
Stability | provisional |
Portability | non-portable (requires concurrency, stm) |
Safe Haskell | None |
Language | Haskell2010 |
You can find benchmarks and more information about the internals of this package here: https://lowerbound.io/blog/2019-10-24_concurrent_hash_table_performance.html
Synopsis
- data HashTable k v
- data Chain k v
- _itemsTV :: Chain k v -> TVar [(k, v)]
- new :: Eq k => Int -> Config k -> IO (HashTable k v)
- newWithDefaults :: (Eq k, Hashable k) => Int -> IO (HashTable k v)
- mkDefaultConfig :: Hashable k => IO (Config k)
- data Config k = Config {
- _scaleFactor :: Float
- _threshold :: Float
- _numResizeWorkers :: Int
- _hashFunc :: k -> Int
- lookup :: Eq k => HashTable k v -> k -> IO (Maybe v)
- insert :: Eq k => HashTable k v -> k -> v -> IO Bool
- insertIfNotExists :: Eq k => HashTable k v -> k -> v -> IO Bool
- delete :: Eq k => HashTable k v -> k -> IO Bool
- getAssocs :: Eq k => HashTable k v -> STM [(k, v)]
Documentation
Used for chain-hashing.
Creates a new hash table with an initial size. See newWithDefaults
for more details.
You probably either want to use newWithDefaults
instead or
something like this:
> mkDefaultConfig { _field = myValue } >>= new 10
Creates a new hash table with the given initial vector size, scale factor 2.0, a resizing load threshold of 0.75, and we use as many threads for resizing as we have cores available. This will use a hash function with a (single) random salt, so if you need security, you MUST supply your own hash function. To be replaced by universal hashing in future versions.
mkDefaultConfig :: Hashable k => IO (Config k) Source #
Default configuration: scale factor = 2.0; resizing threshold = 0.75;
number of worker threads for resizing = getNumCapabilities
;
hash function = use hashWithSalt
with a random salt
Configuration options that may affect the performance of the hash table
Config | |
|
lookup :: Eq k => HashTable k v -> k -> IO (Maybe v) Source #
Lookup the value for a key in the hash table.