beyond-all-reason / beyond-all-reason/RecoilEngine

Put together a test of unordered containers

Open
#324 1 comment 0 reactions 0 assignees View on GitHub
good first issue refactor todo
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.