diff options
| author | Tyge Løvset <[email protected]> | 2022-07-15 08:10:40 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2022-07-15 08:10:40 +0200 |
| commit | 61aad2d4e4ab744ef75ac30433526dce572a1074 (patch) | |
| tree | 6eeff7d460e9cd703e1ce0b550e277be872756dd /benchmarks | |
| parent | 293af54c54a4864f80ad3f9520ad4d2f85723aa1 (diff) | |
| download | STC-modified-61aad2d4e4ab744ef75ac30433526dce572a1074.tar.gz STC-modified-61aad2d4e4ab744ef75ac30433526dce572a1074.zip | |
Added shootout_hashmaps.cpp to build_all.sh and fixed warnings.
Diffstat (limited to 'benchmarks')
| -rw-r--r-- | benchmarks/build_all.sh | 2 | ||||
| -rw-r--r-- | benchmarks/shootout_hashmaps.cpp | 19 |
2 files changed, 10 insertions, 11 deletions
diff --git a/benchmarks/build_all.sh b/benchmarks/build_all.sh index 44f3ceed..e974b2cb 100644 --- a/benchmarks/build_all.sh +++ b/benchmarks/build_all.sh @@ -18,7 +18,7 @@ if [ ! -z "$1" ] ; then cc=$@ fi if [ $run = 0 ] ; then - for i in misc/*.c* picobench/*.cpp plotbench/*.cpp ; do + for i in *.cpp misc/*.c* picobench/*.cpp plotbench/*.cpp ; do echo $cc -I../include $i $cc -I../include $i done diff --git a/benchmarks/shootout_hashmaps.cpp b/benchmarks/shootout_hashmaps.cpp index 9c9bce27..b2827333 100644 --- a/benchmarks/shootout_hashmaps.cpp +++ b/benchmarks/shootout_hashmaps.cpp @@ -53,8 +53,8 @@ KHASH_MAP_INIT_INT64(ii, int64_t) #define CMAP_DTOR(X) cmap_##X##_drop(&map) #define KMAP_SETUP(X, Key, Value) khash_t(X)* map = kh_init(X); khiter_t ki; int ret -#define KMAP_PUT(X, key, val) (*(ki = kh_put(X, map, key, &ret), map->vals[ki] = val, map->vals+ki)) -#define KMAP_EMPLACE(X, key, val) (*(ki = kh_put(X, map, key, &ret), ret ? (map->vals[ki] = val, 0) : 1, map->vals+ki)) +#define KMAP_PUT(X, key, val) (ki = kh_put(X, map, key, &ret), map->vals[ki] = val, map->vals[ki]) +#define KMAP_EMPLACE(X, key, val) (ki = kh_put(X, map, key, &ret), ret ? (map->vals[ki] = val, 0) : 1, map->vals[ki]) #define KMAP_ERASE(X, key) ((ki = kh_get(X, map, key)) != kh_end(map) ? kh_del(X, map, ki), 1 : 0) #define KMAP_FOR(X, i) for (khint_t i = kh_begin(map); i != kh_end(map); ++i) if (kh_exist(map, i)) #define KMAP_ITEM(X, i) map->vals[i] @@ -112,7 +112,6 @@ KHASH_MAP_INIT_INT64(ii, int64_t) #define TMAP_CLEAR(X) UMAP_CLEAR(X) #define TMAP_DTOR(X) UMAP_DTOR(X) -//#define RMAP_SETUP(X, Key, Value) robin_hood::unordered_map<Key, Value> map #define RMAP_SETUP(X, Key, Value) robin_hood_flat_map<Key, Value> map #define RMAP_PUT(X, key, val) UMAP_PUT(X, key, val) #define RMAP_EMPLACE(X, key, val) UMAP_EMPLACE(X, key, val) @@ -121,7 +120,7 @@ KHASH_MAP_INIT_INT64(ii, int64_t) #define RMAP_FOR(X, i) UMAP_FOR(X, i) #define RMAP_ITEM(X, i) UMAP_ITEM(X, i) #define RMAP_SIZE(X) UMAP_SIZE(X) -#define RMAP_BUCKETS(X) map.mask() +#define RMAP_BUCKETS(X) (map.mask() + 1) #define RMAP_CLEAR(X) UMAP_CLEAR(X) #define RMAP_DTOR(X) UMAP_DTOR(X) @@ -172,7 +171,7 @@ KHASH_MAP_INIT_INT64(ii, int64_t) sum += ++ M##_EMPLACE(X, RAND(keybits), i); \ } \ difference = clock() - before; \ - printf(#M ": time: %5.03f, size: %" PRIuMAX ", buckets: %8zu, sum: %" PRIuMAX "\n", \ + printf(#M ": time: %5.03f, size: %" PRIuMAX ", buckets: %8" PRIuMAX ", sum: %" PRIuMAX "\n", \ (float) difference / CLOCKS_PER_SEC, (size_t) M##_SIZE(X), (size_t) M##_BUCKETS(X), sum); \ M##_DTOR(X); \ } @@ -187,7 +186,7 @@ KHASH_MAP_INIT_INT64(ii, int64_t) for (size_t i = 0; i < n; ++i) \ erased += M##_ERASE(X, i); \ difference = clock() - before; \ - printf(#M ": time: %5.03f, size: %" PRIuMAX ", buckets: %8zu, erased %" PRIuMAX "\n", \ + printf(#M ": time: %5.03f, size: %" PRIuMAX ", buckets: %8" PRIuMAX ", erased %" PRIuMAX "\n", \ (float) difference / CLOCKS_PER_SEC, (size_t) M##_SIZE(X), (size_t) M##_BUCKETS(X), erased); \ M##_DTOR(X); \ } @@ -205,7 +204,7 @@ KHASH_MAP_INIT_INT64(ii, int64_t) for (size_t i = 0; i < n; ++i) \ erased += M##_ERASE(X, RAND(keybits)); \ difference = clock() - before; \ - printf(#M ": time: %5.03f, size: %" PRIuMAX ", buckets: %8zu, erased %" PRIuMAX "\n", \ + printf(#M ": time: %5.03f, size: %" PRIuMAX ", buckets: %8" PRIuMAX ", erased %" PRIuMAX "\n", \ (float) difference / CLOCKS_PER_SEC, (size_t) M##_SIZE(X), (size_t) M##_BUCKETS(X), erased); \ M##_DTOR(X); \ } @@ -223,7 +222,7 @@ KHASH_MAP_INIT_INT64(ii, int64_t) for (size_t k=0; k < x; k++) M##_FOR (X, it) \ sum += M##_ITEM(X, it); \ difference = clock() - before; \ - printf(#M ": time: %5.03f, size: %" PRIuMAX ", buckets: %8zu, repeats: %" PRIuMAX ", sum: %" PRIuMAX "\n", \ + printf(#M ": time: %5.03f, size: %" PRIuMAX ", buckets: %8" PRIuMAX ", repeats: %" PRIuMAX ", sum: %" PRIuMAX "\n", \ (float) difference / CLOCKS_PER_SEC, (size_t) M##_SIZE(X), (size_t) M##_BUCKETS(X), x, sum); \ M##_DTOR(X); \ } @@ -245,7 +244,7 @@ KHASH_MAP_INIT_INT64(ii, int64_t) for (size_t i = 0; i < x; ++i) \ found += M##_FIND(X, RAND(keybits)); \ difference = clock() - before; \ - printf(#M ": time: %5.03f, size: %" PRIuMAX ", buckets: %8zu, lookups: %" PRIuMAX ", found: %" PRIuMAX "\n", \ + printf(#M ": time: %5.03f, size: %" PRIuMAX ", buckets: %8" PRIuMAX ", lookups: %" PRIuMAX ", found: %" PRIuMAX "\n", \ (float) difference / CLOCKS_PER_SEC, (size_t) M##_SIZE(X), (size_t) M##_BUCKETS(X), x*2, found); \ M##_DTOR(X); \ } @@ -270,7 +269,7 @@ int main(int argc, char* argv[]) unsigned n_mill = argc >= 2 ? atoi(argv[1]) : DEFAULT_N_MILL; unsigned keybits = argc >= 3 ? atoi(argv[2]) : DEFAULT_KEYBITS; unsigned n = n_mill * 1000000; - unsigned N0 = n, N1 = n/2, N2 = n/2, N3 = n, N4 = n, N5 = n/2; + unsigned N1 = n/2, N2 = n/2, N3 = n, N4 = n, N5 = n/2; stc64_t rng; size_t seed = time(NULL); |
