From 0a02638f787d6b7892535daa8ba67c2154a2da77 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Thu, 4 Feb 2021 13:58:06 +0100 Subject: map iter updates. --- benchmarks/cmap_benchmark2.cpp | 8 ++++---- benchmarks/csmap_benchmark2.cpp | 14 +++++++------- stc/csmap.h | 10 +++++----- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/benchmarks/cmap_benchmark2.cpp b/benchmarks/cmap_benchmark2.cpp index 65543712..be8a47a6 100644 --- a/benchmarks/cmap_benchmark2.cpp +++ b/benchmarks/cmap_benchmark2.cpp @@ -244,13 +244,13 @@ static void ins_and_access_cmap_s(picobench::state& s) randomize(str.str, cstr_size(str)); cmap_s_put(&map, str.str, cstr_clone(str)); randomize(str.str, cstr_size(str)); - cmap_s_value_t* val = cmap_s_find(&map, str.str); - if (val) { + cmap_s_iter_t it = cmap_s_find(&map, str.str); + if (it.ref) { ++result; - cmap_s_erase_entry(&map, val); + cmap_s_erase_at(&map, it); } } - s.set_result(result); + s.set_result(result + cmap_s_size(map)); cstr_del(&str); cmap_s_del(&map); } diff --git a/benchmarks/csmap_benchmark2.cpp b/benchmarks/csmap_benchmark2.cpp index 5bb17bda..4ff1d903 100644 --- a/benchmarks/csmap_benchmark2.cpp +++ b/benchmarks/csmap_benchmark2.cpp @@ -154,7 +154,7 @@ static void ins_and_access_i(picobench::state& s) stc64_srandom(seed); picobench::scope scope(s); - c_forrange (N1) { + c_forrange (s.iterations()) { result += ++map[stc64_random() & mask]; auto it = map.find(stc64_random() & mask); if (it != map.end()) map.erase(it->first); @@ -170,10 +170,10 @@ static void ins_and_access_csmap_i(picobench::state& s) stc64_srandom(seed); picobench::scope scope(s); - c_forrange (N1) { + c_forrange (s.iterations()) { result += ++csmap_i_emplace(&map, stc64_random() & mask, 0).first->second; - csmap_i_value_t* val = csmap_i_find(&map, stc64_random() & mask); - if (val) csmap_i_erase(&map, val->first); + csmap_i_iter_t it = csmap_i_find(&map, stc64_random() & mask); + if (it.ref) csmap_i_erase(&map, it.ref->first); } s.set_result(result + csmap_i_size(map)); csmap_i_del(&map); @@ -226,10 +226,10 @@ static void ins_and_access_csmap_s(picobench::state& s) randomize(str.str, cstr_size(str)); csmap_s_put(&map, str.str, cstr_clone(str)); randomize(str.str, cstr_size(str)); - csmap_s_value_t* val = csmap_s_find(&map, str.str); - if (val) { + csmap_s_iter_t it = csmap_s_find(&map, str.str); + if (it.ref) { ++result; - csmap_s_erase(&map, val->first.str); + csmap_s_erase(&map, it.ref->first.str); } } s.set_result(result + csmap_s_size(map)); diff --git a/stc/csmap.h b/stc/csmap.h index 1adfcbc2..978578de 100644 --- a/stc/csmap.h +++ b/stc/csmap.h @@ -464,11 +464,11 @@ int main(void) { if (d[d[tn].link[0]].level < d[tn].level - 1 || d[tx].level < d[tn].level - 1) { \ if (d[tx].level > --d[tn].level) \ d[tx].level = d[tn].level; \ - tn = C##_##X##_skew_(d, tn); \ - tx = d[tn].link[1] = C##_##X##_skew_(d, d[tn].link[1]); \ - d[tx].link[1] = C##_##X##_skew_(d, d[tx].link[1]); \ - tn = C##_##X##_split_(d, tn); \ - d[tn].link[1] = C##_##X##_split_(d, d[tn].link[1]); \ + tn = C##_##X##_skew_(d, tn); \ + tx = d[tn].link[1] = C##_##X##_skew_(d, d[tn].link[1]); \ + d[tx].link[1] = C##_##X##_skew_(d, d[tx].link[1]); \ + tn = C##_##X##_split_(d, tn); \ + d[tn].link[1] = C##_##X##_split_(d, d[tn].link[1]); \ } \ return tn; \ } \ -- cgit v1.2.3