diff options
| author | Tyge Løvset <[email protected]> | 2021-03-01 16:26:51 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-03-01 16:26:51 +0100 |
| commit | df259d54a43039f0cd2e4bbb168bf60a8dd97973 (patch) | |
| tree | fda12d24ad87e0cb2f9f5d471faf55bed993f4b2 /benchmarks/shootout1_cmap.cpp | |
| parent | 3add074518345bf3b6b965c3f79bd0d35079891b (diff) | |
| download | STC-modified-df259d54a43039f0cd2e4bbb168bf60a8dd97973.tar.gz STC-modified-df259d54a43039f0cd2e4bbb168bf60a8dd97973.zip | |
Update exteral maps
Diffstat (limited to 'benchmarks/shootout1_cmap.cpp')
| -rw-r--r-- | benchmarks/shootout1_cmap.cpp | 77 |
1 files changed, 23 insertions, 54 deletions
diff --git a/benchmarks/shootout1_cmap.cpp b/benchmarks/shootout1_cmap.cpp index e16d4f41..f88d5ad6 100644 --- a/benchmarks/shootout1_cmap.cpp +++ b/benchmarks/shootout1_cmap.cpp @@ -5,9 +5,10 @@ #include <string>
#include <unordered_map>
#include <stdexcept>
-#include "others/bytell_hash_map.hpp"
#include "others/robin_hood.hpp"
-#include "others/hopscotch_map.h"
+#include "others/skarupke/bytell_hash_map.hpp"
+#include "others/tsl/hopscotch_map.h"
+#include "others/tsl/robin_map.h"
#include "others/sparsepp/spp.h"
#define PICOBENCH_IMPLEMENT_WITH_MAIN
@@ -20,6 +21,7 @@ template <class K, class V> using umap = std::unordered_map<K, V>; template <class K, class V> using bmap = ska::bytell_hash_map<K, V>;
template <class K, class V> using fmap = ska::flat_hash_map<K, V>;
template <class K, class V> using hmap = tsl::hopscotch_map<K, V>;
+template <class K, class V> using omap = tsl::robin_map<K, V>;
template <class K, class V> using smap = spp::sparse_hash_map<K, V>;
template <class K, class V> using rmap = robin_hood::unordered_flat_map<K, V, robin_hood::hash<K>,
std::equal_to<K>, MaxLoadFactor100>;
@@ -28,9 +30,11 @@ template <class K, class V> using rmap = robin_hood::unordered_flat_map<K, V, ro using b##map = bmap __VA_ARGS__; \
using f##map = fmap __VA_ARGS__; \
using h##map = hmap __VA_ARGS__; \
+ using o##map = omap __VA_ARGS__; \
using s##map = smap __VA_ARGS__; \
using r##map = rmap __VA_ARGS__
+
DEFMAP(map_i, <int, int>);
DEFMAP(map_x, <uint64_t, uint64_t>);
DEFMAP(map_s, <std::string, std::string>);
@@ -39,54 +43,15 @@ using_cmap(i, int, int, c_default_equals, c_default_hash32); using_cmap(x, uint64_t, uint64_t, c_default_equals, c_default_hash64);
using_cmap_str();
-PICOBENCH_SUITE("Map1");
-
-template <class MapInt>
-static void ctor_and_ins_one_i(picobench::state& s)
-{
- size_t result = 0;
-
- picobench::scope scope(s);
- c_forrange (n, s.iterations()) {
- MapInt map;
- map[n];
- result += map.size();
- }
- s.set_result(result);
-}
-
-static void ctor_and_ins_one_cmap_i(picobench::state& s)
-{
- size_t result = 0;
-
- picobench::scope scope(s);
- c_forrange (n, s.iterations()) {
- cmap_i map = cmap_i_init();
- cmap_i_emplace(&map, n, 0);
- result += cmap_i_size(map);
- cmap_i_del(&map);
- }
- s.set_result(result);
-}
-
-#define P samples(S1).iterations({N1})
-PICOBENCH(ctor_and_ins_one_i<umap_i>).P;
-PICOBENCH(ctor_and_ins_one_i<bmap_i>).P;
-PICOBENCH(ctor_and_ins_one_i<fmap_i>).P;
-PICOBENCH(ctor_and_ins_one_i<hmap_i>).P;
-PICOBENCH(ctor_and_ins_one_i<smap_i>).P;
-PICOBENCH(ctor_and_ins_one_i<rmap_i>).P;
-PICOBENCH(ctor_and_ins_one_cmap_i).P;
-#undef P
-PICOBENCH_SUITE("Map2");
+PICOBENCH_SUITE("Map1");
template <class MapInt>
static void ins_and_erase_i(picobench::state& s)
{
size_t result = 0;
MapInt map;
- map.max_load_factor(MaxLoadFactor100 / 100.0);
+ map.max_load_factor((int)MaxLoadFactor100 / 100.0);
stc64_srandom(seed);
picobench::scope scope(s);
@@ -105,7 +70,7 @@ static void ins_and_erase_i(picobench::state& s) static void ins_and_erase_cmap_i(picobench::state& s)
{
cmap_i map = cmap_i_init();
- cmap_i_set_load_factors(&map, 0.0, MaxLoadFactor100 / 100.0);
+ cmap_i_set_load_factors(&map, 0.0, (int)MaxLoadFactor100 / 100.0);
stc64_srandom(seed);
picobench::scope scope(s);
@@ -125,7 +90,7 @@ static void ins_and_erase_cmap_i(picobench::state& s) static void ins_and_erase_cmap_x(picobench::state& s)
{
cmap_x map = cmap_x_init();
- cmap_x_set_load_factors(&map, 0.0, MaxLoadFactor100 / 100.0);
+ cmap_x_set_load_factors(&map, 0.0, (int)MaxLoadFactor100 / 100.0);
stc64_srandom(seed);
picobench::scope scope(s);
@@ -147,12 +112,13 @@ PICOBENCH(ins_and_erase_i<umap_x>).P; PICOBENCH(ins_and_erase_i<bmap_x>).P;
PICOBENCH(ins_and_erase_i<fmap_x>).P;
PICOBENCH(ins_and_erase_i<hmap_x>).P;
+PICOBENCH(ins_and_erase_i<omap_x>).P;
PICOBENCH(ins_and_erase_i<smap_x>).P;
PICOBENCH(ins_and_erase_i<rmap_x>).P;
PICOBENCH(ins_and_erase_cmap_x).P;
#undef P
-PICOBENCH_SUITE("Map3");
+PICOBENCH_SUITE("Map2");
template <class MapInt>
static void ins_and_access_i(picobench::state& s)
@@ -160,7 +126,7 @@ static void ins_and_access_i(picobench::state& s) uint64_t mask = (1ull << s.arg()) - 1;
size_t result = 0;
MapInt map;
- map.max_load_factor(MaxLoadFactor100 / 100.0);
+ map.max_load_factor((int)MaxLoadFactor100 / 100.0);
stc64_srandom(seed);
picobench::scope scope(s);
@@ -174,7 +140,7 @@ static void ins_and_access_cmap_i(picobench::state& s) uint64_t mask = (1ull << s.arg()) - 1;
size_t result = 0;
cmap_i map = cmap_i_init();
- cmap_i_set_load_factors(&map, 0.0, MaxLoadFactor100 / 100.0);
+ cmap_i_set_load_factors(&map, 0.0, (int)MaxLoadFactor100 / 100.0);
stc64_srandom(seed);
picobench::scope scope(s);
@@ -189,12 +155,13 @@ PICOBENCH(ins_and_access_i<umap_i>).P; PICOBENCH(ins_and_access_i<bmap_i>).P;
PICOBENCH(ins_and_access_i<fmap_i>).P;
PICOBENCH(ins_and_access_i<hmap_i>).P;
+PICOBENCH(ins_and_access_i<omap_i>).P;
PICOBENCH(ins_and_access_i<smap_i>).P;
PICOBENCH(ins_and_access_i<rmap_i>).P;
PICOBENCH(ins_and_access_cmap_i).P;
#undef P
-PICOBENCH_SUITE("Map4");
+PICOBENCH_SUITE("Map3");
static void randomize(char* str, size_t len) {
union {uint64_t i; char c[8];} r = {.i = stc64_random()};
@@ -208,7 +175,7 @@ static void ins_and_access_s(picobench::state& s) std::string str(s.arg(), 'x');
size_t result = 0;
MapStr map;
- map.max_load_factor(MaxLoadFactor100 / 100.0);
+ map.max_load_factor((int)MaxLoadFactor100 / 100.0);
stc64_srandom(seed);
picobench::scope scope(s);
@@ -226,7 +193,7 @@ static void ins_and_access_cmap_s(picobench::state& s) cstr str = cstr_with_size(s.arg(), 'x');
size_t result = 0;
cmap_str map = cmap_str_init();
- cmap_str_set_load_factors(&map, 0.0, MaxLoadFactor100 / 100.0);
+ cmap_str_set_load_factors(&map, 0.0, (int)MaxLoadFactor100 / 100.0);
stc64_srandom(seed);
picobench::scope scope(s);
@@ -246,18 +213,19 @@ PICOBENCH(ins_and_access_s<umap_s>).P; PICOBENCH(ins_and_access_s<bmap_s>).P;
PICOBENCH(ins_and_access_s<fmap_s>).P;
PICOBENCH(ins_and_access_s<hmap_s>).P;
+PICOBENCH(ins_and_access_s<omap_s>).P;
PICOBENCH(ins_and_access_s<smap_s>).P;
PICOBENCH(ins_and_access_s<rmap_s>).P;
PICOBENCH(ins_and_access_cmap_s).P;
#undef P
-PICOBENCH_SUITE("Map5");
+PICOBENCH_SUITE("Map4");
template <class MapX>
static void iterate_x(picobench::state& s)
{
MapX map;
- map.max_load_factor(MaxLoadFactor100 / 100.0);
+ map.max_load_factor((int)MaxLoadFactor100 / 100.0);
uint64_t K = (1ull << s.arg()) - 1;
picobench::scope scope(s);
@@ -286,7 +254,7 @@ static void iterate_x(picobench::state& s) static void iterate_cmap_x(picobench::state& s)
{
cmap_x map = cmap_x_init();
- cmap_x_set_load_factors(&map, 0.3, MaxLoadFactor100 / 100.0);
+ cmap_x_set_load_factors(&map, 0.3, (int)MaxLoadFactor100 / 100.0);
uint64_t K = (1ull << s.arg()) - 1;
picobench::scope scope(s);
@@ -319,6 +287,7 @@ PICOBENCH(iterate_x<umap_x>).P; PICOBENCH(iterate_x<bmap_x>).P;
PICOBENCH(iterate_x<fmap_x>).P;
PICOBENCH(iterate_x<hmap_x>).P;
+PICOBENCH(iterate_x<omap_x>).P;
PICOBENCH(iterate_x<smap_x>).P;
PICOBENCH(iterate_x<rmap_x>).P;
PICOBENCH(iterate_cmap_x).P;
|
