From bfa4b59faef4125495f38aaf4e65ce0a7532a467 Mon Sep 17 00:00:00 2001 From: Tyge Løvset <60263450+tylo-work@users.noreply.github.com> Date: Sat, 14 Mar 2020 13:44:24 +0100 Subject: Update benchmark.cpp --- benchmark.cpp | 63 ++++++++++++----------------------------------------------- 1 file changed, 12 insertions(+), 51 deletions(-) (limited to 'benchmark.cpp') diff --git a/benchmark.cpp b/benchmark.cpp index 386a0bc7..e5cbc407 100644 --- a/benchmark.cpp +++ b/benchmark.cpp @@ -5,7 +5,6 @@ #include #include - declare_CMap(ii, int64_t, int64_t); declare_CVector_string(s); @@ -32,8 +31,11 @@ int main() break; case 2: entry = cmap_ii_get(map, rnd); - if (entry) { checksum += entry->value; ++erased; } - /*erased +=*/ cmap_ii_erase(&map, rnd); + if (entry) { + ++erased; + checksum += entry->value; + cmap_ii_erase(&map, rnd); + } break; case 3: get += (cmap_ii_get(map, rnd) != NULL); @@ -42,8 +44,6 @@ int main() } difference = clock() - before; printf("CMap_ii: size: %llu, time: %f, sum: %llu, erased: %llu, get %llu\n", cmap_size(map), 1.0 * difference / CLOCKS_PER_SEC, checksum, erased, get); - //c_foreach (i, cmap_ii, map) sum += cmap_ii_get(map, i.item->key)->value; - //cmap_ii_destroy(&map); std::unordered_map map2, map3; std::unordered_map::const_iterator iter; @@ -60,8 +60,11 @@ int main() break; case 2: iter = map2.find(rnd); - if (iter != map2.end()) { checksum += iter->second; ++erased; } - /*erased +=*/ map2.erase(rnd); + if (iter != map2.end()) { + ++erased; + checksum += iter->second; + map2.erase(rnd); + } break; case 3: get += (map2.find(rnd) != map2.end()); @@ -70,49 +73,7 @@ int main() } difference = clock() - before; printf("std::um: size: %llu, time: %f, sum: %llu, erased: %llu, get %llu\n", map2.size(), 1.0 * difference / CLOCKS_PER_SEC, checksum, erased, get); - - c_foreach (i, cmap_ii, map) map3[ i.item->key ] = i.item->value; - printf("map3: %llu, %d\n", map3.size(), map2 == map3); - - -#if 0 - srand(123); - const size_t N = 40000000; - CMap_ii map = cmap_initializer; - CMapEntry_ii* entry; - uint64_t checksum = 0, erased = 0, get = 0; - uint64_t checksum2 = 0, erased2 = 0, get2 = 0; - std::unordered_map map2, map3; - std::unordered_map::const_iterator iter; - srand(123); - for (size_t i = 0; i < N; ++i) { - int64_t rnd = rand(); - int op = rand() >> 13; - switch (op) { - case 1: - checksum += ++cmap_ii_put(&map, rnd, i-1)->value; - checksum2 += ++(map2[rnd] = i-1); - if (rnd == 16459) printf("%llu: put 16459: %llu\n", i, erased); - break; - case 2: - erased += cmap_ii_erase(&map, rnd); - erased2 += map2.erase(rnd); - if (erased != erased2) { - printf("%llu: era %llu: %llu, %llu\n", i, rnd, erased, erased2); - exit(0); - } - if (rnd == 16459) printf("%llu: era 16459: %llu\n", i, erased); - break; - case 3: - get += (cmap_ii_get(map, rnd) != NULL); - get2 += (map2.find(rnd) != map2.end()); - break; - } - } - printf("cmap_ii: size: %llu, sum: %llu, erased: %llu, get %llu\n", cmap_size(map), checksum, erased, get); - printf("std::um: size: %llu, sum: %llu, erased: %llu, get %llu\n", map2.size(), checksum2, erased2, get2); -#endif - + cmap_ii_destroy(&map); map2.clear(); -} \ No newline at end of file +} -- cgit v1.2.3