# MerkleMap
MerkleMap is an augmented "plain" Map. Certain operations are faster, and others are slower. MerkleMap also requires more memory, so be aware of this.
MerkleMap is a drop-in replacement for Map.
## Benchmarks
```
##### With input 100_000 #####
Name ips average deviation median 99th %
merkle_map_not_equal_2 29.68 M 0.0337 μs±140140.94% 0 μs 0 μs
merkle_map_equal_2 26.57 M 0.0376 μs±120079.35% 0 μs 0 μs
map_put_3 3.48 M 0.29 μs ±62046.73% 0 μs 1.19 μs
merkle_map_put_3 0.0299 M 33.45 μs ±423.46% 32.51 μs 52.15 μs
merkle_map_merge_2 0.0216 M 46.27 μs ±22.46% 43.23 μs 90.85 μs
map_equal_2 0.00103 M 973.70 μs ±4.77% 971.72 μs 1083.10 μs
map_not_equal_2 0.00096 M 1036.80 μs ±11.78% 1003.98 μs 1617.23 μs
map_merge_2 0.00064 M 1553.92 μs ±62.33% 1524.15 μs 1839.37 μs
```
## Installation
This package can be installed by adding `merkle_map` and `murmur` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[
{:merkle_map, "~> 0.1.0"},
{:murmur, "~> 1.0"}
]
end
```
Using another hash function. By default MerkleMap will use `Murmur` for hashing, but if you already have another hash library as a dependency in your app then you might want to re-use that library. Simply implement the `MerkleMap.Hash` behaviour and add the following configuration to your mix config:
```elixir
config :merkle_map, hash_module: MyHash
```
The docs can be found at [https://hexdocs.pm/merkle_map](https://hexdocs.pm/merkle_map).