beyond-all-reason / beyond-all-reason/RecoilEngine
Put together a test of unordered containers
- Dominant language
- C++
- Stars
- 679
- Forks
- 290
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 40
Description
The task is to code a spring test that would compare the performance characteristics of `std::unordered_map` & `std::unordered_set` with `spring::unordered_map` & `spring::unordered_set` respectively. I assume the tests should:
* include 3 cases with dataset size of say 100, 1000, 10000 elements
* test 90% : 10% find : insert/erase and 50% : 50% find : insert/erase workloads
* test trivial (int) keys/values and something more complex like std::string
`spring::unordered_map` & `spring::unordered_set` were introduced a while ago and the underlying implementation is rather dated too. It's possible that `std::` versions perform the same, then it doesn't make sense to keep `spring::` except for maybe special `Hash` versions. It's also possible that `spring::` versions are way faster.
In either case it's also worth exploring alternative implementations. For example https://github.com/martinus/robin-hood-hashing which claims to be fastest in the world.
Contributor guide
Research direction
Start by locating the existing spring test infrastructure and the entry points for spring::unordered_map and spring::unordered_set. Compare them with std::unordered_map and std::unordered_set across the requested dataset sizes, workload ratios, and key/value types. Done means the performance characteristics are recorded clearly enough to assess whether the spring containers or an alternative implementation should be retained.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- performance
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100