mirror of
https://github.com/boostorg/boost_unordered_benchmarks.git
synced 2026-01-19 04:02:13 +00:00
boost_unordered_set
boost::unordered_[multi]set benchmarks
Automated benchmarks of boost::unordered_[multi]set against std::unordered_[multi]set and Boost.MultiIndex.
Benchmarks
unique_running_insertion.cpp: insertion of n randomunsigned ints into a set, n = 10,000 to 3M.non_unique_running_insertion.cpp: same as above, but the container is a multiset and elements are repeated an average of 5 times.unique_scattered_erasure.cpp: erasure by iterator in random order of the n elements of a set filled as above.non_unique_scattered_erasure.cpp: same as prior, but with multisets.non_unique_scattered_erasure_by_key.cpp: erasure by key of all the elements of a multiset ofstd::strings filled with random strings with average repetition 5, n = 10,000 to 3M.unique_scattered_lookup.cpp:- Successful: lookup of the n keys of the container in the same order as inserted.
- Unsuccesful: lookup of n random keys not related to those inserted (and thus not present in the container with probabilty ~100%).
non_unique_scattered_lookup.cpp: same as prior, but with multisets.
How to read the results
Folder
gcc: GCC 12 with libstdc++-v3, 64 bitsclang_libcpp: Clang 15 with libc++, 64 bitsvs: Visual Studio 2022 with (formerly known as) Dinkumware stdlib implementation, 64 bits
Excel file
running insertion.xlsx: results ofunique_running_insertion.cppandnon_unique_running_insertion.cppscattered erasure.xlsx: results ofunique_scattered_erasure.cppandnon_unique_scattered_erasure.cppscattered erasure by key.xlsx: results ofnon_unique_scattered_erasure_by_key.cppscattered successful looukp.xlsx: results ofunique_scattered_lookup.cppandnon_unique_scattered_lookup.cpp, successful casescattered unsuccessful looukp.xlsx: results ofunique_scattered_lookup.cppandnon_unique_scattered_lookup.cpp, unsuccessful case
Tab (inside each Excel file)
practice: Without duplicate elements (sets)practice non-unique: With duplicate elements (multisets)practice non-unique 5: Same as above, but the maximum load factor is set to 5practice norehash: (Insertion only) same aspractice, butreserveis called prior to insertionpractice norehash non-unique: (Insertion only) same aspractice non-unique, butreserveis called prior to insertionpractice norehash non-unique 5: (Insertion only) same aspractice non-unique 5, butreserveis called prior to insertion
Graphs
GCC 12 + libstdc++-v3
Insertion
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
| non-duplicate elements, prior reserve |
duplicate elements, prior reserve |
duplicate elements, max load factor 5, prior reserve |
Erasure
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
| by key, duplicate elements |
by key, duplicate elements, max load factor 5 |
Successful lookup
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
Unsuccessful lookup
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
Clang 15 + libc++
Insertion
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
| non-duplicate elements, prior reserve |
duplicate elements, prior reserve |
duplicate elements, max load factor 5, prior reserve |
Erasure
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
| by key, duplicate elements |
by key, duplicate elements, max load factor 5 |
Successful lookup
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
Unsuccessful lookup
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
Visual Studio 2022 + Dinkumware
Insertion
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
| non-duplicate elements, prior reserve |
duplicate elements, prior reserve |
duplicate elements, max load factor 5, prior reserve |
Erasure
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
| by key, duplicate elements |
by key, duplicate elements, max load factor 5 |
Successful lookup
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
Unsuccessful lookup
![]() |
||
|---|---|---|
| non-duplicate elements | duplicate elements | duplicate elements, max load factor 5 |
Description











