Files
Martin Leitner-Ankerl ec970e9606 Adds ankerl::unordered_dense{segmented_map, segmented_set}
This new underlying container has a much smoother memory allocation curve
than the default underlying `std::vector`.

* Much smoother memory usage, memory usage increases continuously.
* No high peak memory usage.
* Faster insertion because elements never need to be moved to new allocated blocks
* Slightly slower indexing compared to `std::vector` because an additional
  indirection is needed.

Abseil is fastest for this simple inserting test, taking a bit over 0.8 seconds.
It's peak memory usage is about 430 MB. Note how the memory usage goes down after
the last peak; when it goes down to ~290MB it has finished rehashing and could free
the previously used memory block.

`ankerl::unordered_dense::segmented_map` doesn't have these peaks, and instead has
a smooth increase of memory usage. Note there are still sudden drops & increases in
memory because the indexing data structure needs still needs to increase by a fixed
factor. But due to holding the data in a separate container we are able to first free
the old data structure, and then allocate a new, bigger indexing structure; thus we
do not have peaks.

bump to 4.0.0
2023-04-08 10:43:56 +02:00
..