summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2021-02-04 13:58:06 +0100
committerTyge Løvset <[email protected]>2021-02-04 13:58:06 +0100
commit0a02638f787d6b7892535daa8ba67c2154a2da77 (patch)
treee09fca8668046f44c4897791e884a250d64cbc7e
parent7e64dde7422cafc7fa2f2a90ea6dd0bc34f3a2d2 (diff)
downloadSTC-modified-0a02638f787d6b7892535daa8ba67c2154a2da77.tar.gz
STC-modified-0a02638f787d6b7892535daa8ba67c2154a2da77.zip
map iter updates.
-rw-r--r--benchmarks/cmap_benchmark2.cpp8
-rw-r--r--benchmarks/csmap_benchmark2.cpp14
-rw-r--r--stc/csmap.h10
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; \
} \