#include #include #include #include #include #include #include #include #include #include #include "concurrent_map.h" static constexpr int SIZE = 10000000; void bench() { boost::random::mt19937 rng; boost::random::uniform_int_distribution<> dist(std::numeric_limits::min(), std::numeric_limits::max()); std::vector vec(SIZE); for (int i = 0; i < SIZE; ++i) { uint64_t val = 0; while (val == 0) { val = dist(rng); } vec[i] = val; } std:unordered_map map; //google::dense_hash_map map; //map.set_empty_key(0); auto begin = std::chrono::high_resolution_clock::now(); for (int i = 0; i < SIZE; ++i) { map[vec[i]] = 0.0; } auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast(end - begin); std::cout << "inserts: " << elapsed.count() << std::endl; std::random_shuffle(vec.begin(), vec.end()); begin = std::chrono::high_resolution_clock::now(); long double val; for (int i = 0; i < SIZE; ++i) { val = map[vec[i]]; } end = std::chrono::high_resolution_clock::now(); elapsed = std::chrono::duration_cast(end - begin); std::cout << "get: " << elapsed.count() << std::endl; } int main() { bench(); }