Comprehensive C++ Hashmap Benchmarks (2022)

(martin.ankerl.com)

31 points | by klaussilveira 4 days ago

3 comments

  • spacechild1 25 minutes ago
    Note that this benchmark does not include boost::unordered_flat_map. This is an open addressing variant of boost::unordered_map which has only been released in December 2022.

    I wanted to mention this because boost::unordered_flat_map and boost::unordered_flat_set are among the fastest open addressing hash containers in C++ land. Internally, they use lots of cool SIMD tricks. If anyone is interested in the details, here's a nice blog post by the developer: https://bannalia.blogspot.com/2022/11/inside-boostunorderedf...

  • hermitcrab 50 minutes ago
    Would be interested to hear how the Qt QHash compares.

    https://doc.qt.io/qt-6/qhash.html

    • rurban 30 minutes ago
      Still using linked lists as std::unordered_map. So it won't fly, but keeps ptr stability.
  • rurban 32 minutes ago
    Not really comprehesive. Doesn't include my favorite https://github.com/greg7mdp/parallel-hashmap which adds thread-safety to performance.
    • aw1621107 28 minutes ago
      For what it's worth, there's this bit from the parallel-hashmap readme:

      > We encourage phmap users to switch to gtl if possible. gtl provides the same functionality as this repository, but requires C++20 or above.

      And the benchmarks do include gtl.