Boost hashing performance with Robin Hood #14942

Closed
opened 2026-01-31 04:23:53 +00:00 by claunia · 2 comments
Owner

Originally created by @WSLUser on GitHub (Aug 23, 2021).

Originally assigned to: @lhecker on GitHub.

Description of the new feature/enhancement

Use MIT-licensed https://github.com/martinus/robin-hood-hashing to improve performance and increase memory efficiency. It does come with a custom allocator but it won't win any medals and can be ignored. Instead mimalloc should be compiled in instead and is even recommended by maintainer to use a dedicated allocator instead. This is filed under another issue. Idea for adding this stems from https://github.com/microsoft/terminal/pull/10521#issuecomment-873255814. Also see https://github.com/microsoft/terminal/pull/10341 which addressed a bug with hashing that likely will need to be refactored slightly when adopting this library.

Proposed technical implementation details (optional)

Replace use of std::unordered_map and/or std::unordered_set with Robin Hood equivalent among other changes.

Originally created by @WSLUser on GitHub (Aug 23, 2021). Originally assigned to: @lhecker on GitHub. <!-- 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 I ACKNOWLEDGE THE FOLLOWING BEFORE PROCEEDING: 1. If I delete this entire template and go my own path, the core team may close my issue without further explanation or engagement. 2. If I list multiple bugs/concerns in this one issue, the core team may close my issue without further explanation or engagement. 3. If I write an issue that has many duplicates, the core team may close my issue without further explanation or engagement (and without necessarily spending time to find the exact duplicate ID number). 4. If I leave the title incomplete when filing the issue, the core team may close my issue without further explanation or engagement. 5. If I file something completely blank in the body, the core team may close my issue without further explanation or engagement. All good? Then proceed! --> # Description of the new feature/enhancement Use MIT-licensed https://github.com/martinus/robin-hood-hashing to improve performance and increase memory efficiency. It does come with a custom allocator but it won't win any medals and can be ignored. Instead mimalloc should be compiled in instead and is even recommended by maintainer to use a dedicated allocator instead. This is filed under another issue. Idea for adding this stems from https://github.com/microsoft/terminal/pull/10521#issuecomment-873255814. Also see https://github.com/microsoft/terminal/pull/10341 which addressed a bug with hashing that likely will need to be refactored slightly when adopting this library. <!-- A clear and concise description of what the problem is that the new feature would solve. Describe why and how a user would use this new functionality (if applicable). --> # Proposed technical implementation details (optional) Replace use of `std::unordered_map` and/or `std::unordered_set` with Robin Hood equivalent among other changes. <!-- A clear and concise description of what you want to happen. -->
claunia added the Issue-TaskNeeds-Tag-FixProduct-TerminalArea-Performance labels 2026-01-31 04:23:53 +00:00
Author
Owner

@lhecker commented on GitHub (Aug 23, 2021):

I already have a branch for this: https://github.com/microsoft/terminal/tree/dev/lhecker%2Frobin-hood-hashing
It results in a rather significant binary size increase and doesn't make any noticeable performance differences. It does however improve memory usage significantly under certain conditions.

I'm expecting to introduce that project in a later PR for a purpose were it has a true impact.

@lhecker commented on GitHub (Aug 23, 2021): I already have a branch for this: https://github.com/microsoft/terminal/tree/dev/lhecker%2Frobin-hood-hashing It results in a rather significant binary size increase and doesn't make any noticeable performance differences. It does however improve memory usage significantly under certain conditions. I'm expecting to introduce that project in a later PR for a purpose were it has a true impact.
Author
Owner

@lhecker commented on GitHub (Aug 10, 2022):

I ended up writing my own purpose built hashmap and won't need martinus/robin-hood-hashing anymore. In other areas of this application hashmaps aren't used much.

@lhecker commented on GitHub (Aug 10, 2022): I ended up writing my own purpose built hashmap and won't need `martinus/robin-hood-hashing` anymore. In other areas of this application hashmaps aren't used much.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#14942