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
Copy file name to clipboardExpand all lines: README.md
+14-2Lines changed: 14 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,11 +4,12 @@ This project collects C++ implementations and benchmarking tools of some of the
4
4
The implemented algorithms are:
5
5
*[2014]__jump hash__ by [Lamping and Veach](https://arxiv.org/pdf/1406.2294.pdf)
6
6
*[2020]__anchor hash__ by [Gal Mendelson et al.](https://arxiv.org/pdf/1812.09674.pdf), using the implementation found on [Github](https://github.com/anchorhash/cpp-anchorhash)
7
+
*[2023]__power consistent hash__ by [Eric Leu](https://arxiv.org/pdf/2307.12448.pdf)
7
8
*[2023]__memento hash__ by [M. Coluzzi et al.](https://arxiv.org/pdf/2306.09783.pdf)
8
9
9
10
## Benchmarks
10
11
11
-
The project includes a two benchmarking tools **speed_test** and **balance**, derived from the same tools provided by [Anchorhash](https://github.com/anchorhash/cpp-anchorhash)
12
+
The project includes three benchmarking tools **speed_test**, **balance**, and **monotonicity** derived from the same tools provided by [Anchorhash](https://github.com/anchorhash/cpp-anchorhash)
12
13
13
14
**speed_test** also records **heap allocations** and the maximum allocated heap space.
14
15
@@ -41,7 +42,7 @@ The **speed_test** benchmark performs several random key lookups, the syntax is:
***Algorithm** can be *memento* (for MementoHash using *boost::unordered_flat_map* for the removal set), *mementoboost* (for MementoHash using *boost::unordered_map* for the removal set), *mementostd* (for MementoHash using *std::unordered_map* for the removal set), *mementomash* (for MementoHash using a hash table similar to Java's HashMap), *anchor* (for AnchorHash), *mementogtl* (for Memento with gtl hash map), *jump* (for JumpHash)
45
+
***Algorithm** can be *memento* (for MementoHash using *boost::unordered_flat_map* for the removal set), *mementoboost* (for MementoHash using *boost::unordered_map* for the removal set), *mementostd* (for MementoHash using *std::unordered_map* for the removal set), *mementomash* (for MementoHash using a hash table similar to Java's HashMap), *anchor* (for AnchorHash), *mementogtl* (for Memento with gtl hash map), *jump* (for JumpHash), *power* (for Power Consistent Hashing)
45
46
***AnchorSet** is the size of the Anchor set (**a**): this parameter is used only by *anchor* but must be set to a value *at least equal to WorkingSet* even with *MementoHash*;
46
47
***WorkingSet** is the size of the initial Working set (**w**);
47
48
***NumRemovals** is the number of nodes that should be removed (randomly, except for *Jump*) before starting the benchmark;
@@ -65,6 +66,17 @@ The **balance** benchmark performs a balance test and accepts the same parameter
Done determining initial assignment of 1000000 unique keys
75
+
Removed node 424868
76
+
Memento<boost::unordered_flat_map>: after removal misplaced keys are 0% (0 keys out of 1000000)
77
+
Added node 424868
78
+
Memento<boost::unordered_flat_map>: after adding back misplaced keys are 0% (0 keys out of 1000000)
79
+
```
68
80
69
81
## Java implementation
70
82
For a Java implementation of these and additional algorithms please refer to [this repository](https://github.com/SUPSI-DTI-ISIN/java-consistent-hashing-algorithms)
0 commit comments