From df259d54a43039f0cd2e4bbb168bf60a8dd97973 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Mon, 1 Mar 2021 16:26:51 +0100 Subject: Update exteral maps --- benchmarks/shootout1_cmap.cpp | 77 +++++++++++++------------------------------ 1 file changed, 23 insertions(+), 54 deletions(-) (limited to 'benchmarks/shootout1_cmap.cpp') 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 #include #include -#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 using umap = std::unordered_map; template using bmap = ska::bytell_hash_map; template using fmap = ska::flat_hash_map; template using hmap = tsl::hopscotch_map; +template using omap = tsl::robin_map; template using smap = spp::sparse_hash_map; template using rmap = robin_hood::unordered_flat_map, std::equal_to, MaxLoadFactor100>; @@ -28,9 +30,11 @@ template using rmap = robin_hood::unordered_flat_map); DEFMAP(map_x, ); DEFMAP(map_s, ); @@ -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 -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).P; -PICOBENCH(ctor_and_ins_one_i).P; -PICOBENCH(ctor_and_ins_one_i).P; -PICOBENCH(ctor_and_ins_one_i).P; -PICOBENCH(ctor_and_ins_one_i).P; -PICOBENCH(ctor_and_ins_one_i).P; -PICOBENCH(ctor_and_ins_one_cmap_i).P; -#undef P -PICOBENCH_SUITE("Map2"); +PICOBENCH_SUITE("Map1"); template 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).P; PICOBENCH(ins_and_erase_i).P; PICOBENCH(ins_and_erase_i).P; PICOBENCH(ins_and_erase_i).P; +PICOBENCH(ins_and_erase_i).P; PICOBENCH(ins_and_erase_i).P; PICOBENCH(ins_and_erase_i).P; PICOBENCH(ins_and_erase_cmap_x).P; #undef P -PICOBENCH_SUITE("Map3"); +PICOBENCH_SUITE("Map2"); template 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).P; PICOBENCH(ins_and_access_i).P; PICOBENCH(ins_and_access_i).P; PICOBENCH(ins_and_access_i).P; +PICOBENCH(ins_and_access_i).P; PICOBENCH(ins_and_access_i).P; PICOBENCH(ins_and_access_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).P; PICOBENCH(ins_and_access_s).P; PICOBENCH(ins_and_access_s).P; PICOBENCH(ins_and_access_s).P; +PICOBENCH(ins_and_access_s).P; PICOBENCH(ins_and_access_s).P; PICOBENCH(ins_and_access_s).P; PICOBENCH(ins_and_access_cmap_s).P; #undef P -PICOBENCH_SUITE("Map5"); +PICOBENCH_SUITE("Map4"); template 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).P; PICOBENCH(iterate_x).P; PICOBENCH(iterate_x).P; PICOBENCH(iterate_x).P; +PICOBENCH(iterate_x).P; PICOBENCH(iterate_x).P; PICOBENCH(iterate_x).P; PICOBENCH(iterate_cmap_x).P; -- cgit v1.2.3