diff options
| author | levlam <levlam@telegram.org> | 2022-02-11 14:46:30 +0300 |
|---|---|---|
| committer | levlam <levlam@telegram.org> | 2022-02-11 14:46:30 +0300 |
| commit | 5b4bea1fefc1275a2cf8849be0f284634e91d55e (patch) | |
| tree | 83cdc8308c611130bc034df7532b6f00961b52a1 /benchmark/hashmap_build.cpp | |
| parent | 6ae2096d683d368b50590b6c1fe00f72953125d7 (diff) | |
Add HashMap build time benchmark.
Diffstat (limited to 'benchmark/hashmap_build.cpp')
| -rw-r--r-- | benchmark/hashmap_build.cpp | 540 |
1 files changed, 540 insertions, 0 deletions
diff --git a/benchmark/hashmap_build.cpp b/benchmark/hashmap_build.cpp new file mode 100644 index 000000000..be58967de --- /dev/null +++ b/benchmark/hashmap_build.cpp @@ -0,0 +1,540 @@ +// +// Copyright Aliaksei Levin (levlam@telegram.org), Arseny Smirnov (arseny30@gmail.com) 2014-2022 +// +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +// +#include "td/utils/FlatHashMap.h" + +#include <absl/container/flat_hash_map.h> +#include <folly/container/F14Map.h> +#include <map> +#include <unordered_map> + +#define test_map td::FlatHashMap +//#define test_map folly::F14FastMap +//#define test_map absl::flat_hash_map +//#define test_map std::map +//#define test_map std::unordered_map + +//#define CREATE_MAP(num) CREATE_MAP_IMPL(num) +#define CREATE_MAP(num) + +#define CREATE_MAP_IMPL(num) \ + int f_##num() { \ + test_map<int, std::array<char, num>> m; \ + m.emplace(1, std::array<char, num>{}); \ + int sum = 0; \ + for (auto &it : m) { \ + sum += it.first; \ + } \ + auto it = m.find(1); \ + sum += it->first; \ + m.erase(it); \ + return sum; \ + } \ + int x_##num = f_##num() + +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); +CREATE_MAP(__LINE__); + +int main() { +} |
