Fix HashSet benchmark.
This commit is contained in:
parent
1a3adc3ee7
commit
6ae2096d68
|
@ -74,17 +74,16 @@ if (NOT WIN32 AND NOT CYGWIN)
|
|||
endif()
|
||||
|
||||
find_package(ABSL QUIET)
|
||||
find_package(gflags QUIET)
|
||||
find_package(folly QUIET)
|
||||
|
||||
if (ABSL_FOUND AND gflags_FOUND AND folly_FOUND)
|
||||
if (ABSL_FOUND AND folly_FOUND)
|
||||
add_executable(memory-hashset-memprof EXCLUDE_FROM_ALL ${CMAKE_CURRENT_SOURCE_DIR}/hashset_memory.cpp)
|
||||
target_compile_definitions(memory-hashset-memprof PRIVATE USE_MEMPROF=1)
|
||||
target_link_libraries(memory-hashset-memprof PRIVATE tdutils memprof_stat)
|
||||
target_link_libraries(memory-hashset-memprof PRIVATE SYSTEM Folly::folly absl::flat_hash_map absl::hash)
|
||||
target_link_libraries(memory-hashset-memprof PRIVATE Folly::folly absl::flat_hash_map absl::hash)
|
||||
|
||||
add_executable(memory-hashset-os ${CMAKE_CURRENT_SOURCE_DIR}/hashset_memory.cpp)
|
||||
target_compile_definitions(memory-hashset-os PRIVATE USE_MEMPROF=0)
|
||||
target_link_libraries(memory-hashset-os PRIVATE tdutils)
|
||||
target_link_libraries(memory-hashset-os PRIVATE SYSTEM Folly::folly absl::flat_hash_map absl::hash)
|
||||
target_link_libraries(memory-hashset-os PRIVATE Folly::folly absl::flat_hash_map absl::hash)
|
||||
endif()
|
||||
|
|
|
@ -356,7 +356,7 @@ if (CRC32C_FOUND)
|
|||
target_link_libraries(tdutils PRIVATE crc32c)
|
||||
endif()
|
||||
if (ABSL_FOUND)
|
||||
target_link_libraries(tdutils PUBLIC SYSTEM absl::flat_hash_map absl::flat_hash_set absl::hash)
|
||||
target_link_libraries(tdutils PUBLIC absl::flat_hash_map absl::flat_hash_set absl::hash)
|
||||
endif()
|
||||
|
||||
if (WIN32)
|
||||
|
@ -388,11 +388,10 @@ install(TARGETS tdutils EXPORT TdTargets
|
|||
)
|
||||
|
||||
find_package(benchmark QUIET)
|
||||
find_package(gflags QUIET)
|
||||
find_package(folly QUIET)
|
||||
|
||||
if (ABSL_FOUND AND benchmark_FOUND AND gflags_FOUND AND folly_FOUND)
|
||||
if (ABSL_FOUND AND benchmark_FOUND AND folly_FOUND)
|
||||
add_executable(benchmark-hashset ${CMAKE_CURRENT_SOURCE_DIR}/test/hashset_benchmark.cpp)
|
||||
target_link_libraries(benchmark-hashset PRIVATE tdutils)
|
||||
target_link_libraries(benchmark-hashset PRIVATE SYSTEM benchmark::benchmark Folly::folly absl::flat_hash_map absl::hash)
|
||||
target_link_libraries(benchmark-hashset PRIVATE benchmark::benchmark Folly::folly absl::flat_hash_map absl::hash)
|
||||
endif()
|
||||
|
|
|
@ -360,7 +360,7 @@ static void BM_cache3(benchmark::State &state) {
|
|||
table.emplace(key, i);
|
||||
|
||||
for (size_t j = 1; j < step; j++) {
|
||||
auto key_to_find = keys.data()[rnd()%keys.size()];
|
||||
auto key_to_find = keys.data()[rnd() % keys.size()];
|
||||
benchmark::DoNotOptimize(table.find(key_to_find));
|
||||
}
|
||||
|
||||
|
@ -382,10 +382,14 @@ static void BM_remove_if_slow(benchmark::State &state) {
|
|||
table.emplace(rnd() + 1, i);
|
||||
if (table.size() > N) {
|
||||
size_t cnt = 0;
|
||||
td::table_remove_if(table, [&cnt](auto &) { cnt += 2; return cnt <= N; });
|
||||
td::table_remove_if(table, [&cnt, n = N](auto &) {
|
||||
cnt += 2;
|
||||
return cnt <= n;
|
||||
});
|
||||
}
|
||||
}
|
||||
}}
|
||||
}
|
||||
}
|
||||
|
||||
template <typename TableT>
|
||||
static void benchmark_create(td::Slice name) {
|
||||
|
@ -427,27 +431,26 @@ static void benchmark_create(td::Slice name) {
|
|||
F(std::unordered_map) \
|
||||
F(std::map)
|
||||
|
||||
//BENCHMARK(BM_Get<VectorTable<td::uint64, td::uint64>>)->Range(1, 1 << 26);
|
||||
//BENCHMARK(BM_Get<SortedVectorTable<td::uint64, td::uint64>>)->Range(1, 1 << 26);
|
||||
//BENCHMARK(BM_Get<NoOpTable<td::uint64, td::uint64>>)->Range(1, 1 << 26);
|
||||
//BENCHMARK_TEMPLATE(BM_Get, VectorTable<td::uint64, td::uint64>)->Range(1, 1 << 26);
|
||||
//BENCHMARK_TEMPLATE(BM_Get, SortedVectorTable<td::uint64, td::uint64>)->Range(1, 1 << 26);
|
||||
//BENCHMARK_TEMPLATE(BM_Get, NoOpTable<td::uint64, td::uint64>)->Range(1, 1 << 26);
|
||||
|
||||
#define REGISTER_GET_BENCHMARK(HT) BENCHMARK(BM_Get<HT<td::uint64, td::uint64>>)->Range(1, 1 << 23);
|
||||
#define REGISTER_GET_BENCHMARK(HT) BENCHMARK_TEMPLATE(BM_Get, HT<td::uint64, td::uint64>)->Range(1, 1 << 23);
|
||||
|
||||
#define REGISTER_FIND_BENCHMARK(HT) \
|
||||
BENCHMARK(BM_find_same<HT<td::uint64, td::uint64>>) \
|
||||
BENCHMARK_TEMPLATE(BM_find_same, HT<td::uint64, td::uint64>) \
|
||||
->ComputeStatistics("max", [](const td::vector<double> &v) { return *std::max_element(v.begin(), v.end()); }) \
|
||||
->ComputeStatistics("min", [](const td::vector<double> &v) { return *std::min_element(v.begin(), v.end()); }) \
|
||||
->Repetitions(20) \
|
||||
->DisplayAggregatesOnly(true);
|
||||
|
||||
#define REGISTER_REMOVE_IF_BENCHMARK(HT) BENCHMARK(BM_remove_if<HT<td::uint64, td::uint64>>);
|
||||
#define REGISTER_EMPLACE_BENCHMARK(HT) BENCHMARK(BM_emplace_same<HT<td::uint64, td::uint64>>);
|
||||
#define REGISTER_CACHE_BENCHMARK(HT) BENCHMARK(BM_cache<HT<td::uint64, td::uint64>>);
|
||||
#define REGISTER_CACHE2_BENCHMARK(HT) BENCHMARK(BM_cache2<HT<td::uint64, td::uint64>>);
|
||||
#define REGISTER_CACHE3_BENCHMARK(HT) BENCHMARK(BM_cache3<HT<td::uint64, td::uint64>>)->Range(1, 1 << 23);
|
||||
#define REGISTER_ERASE_ALL_BENCHMARK(HT) BENCHMARK(BM_erase_all_with_begin<HT<td::uint64, td::uint64>>);
|
||||
#define REGISTER_REMOVE_IF_SLOW_BENCHMARK(HT) BENCHMARK(BM_remove_if_slow<HT<td::uint64, td::uint64>>);
|
||||
|
||||
#define REGISTER_REMOVE_IF_BENCHMARK(HT) BENCHMARK_TEMPLATE(BM_remove_if, HT<td::uint64, td::uint64>);
|
||||
#define REGISTER_EMPLACE_BENCHMARK(HT) BENCHMARK_TEMPLATE(BM_emplace_same, HT<td::uint64, td::uint64>);
|
||||
#define REGISTER_CACHE_BENCHMARK(HT) BENCHMARK_TEMPLATE(BM_cache, HT<td::uint64, td::uint64>);
|
||||
#define REGISTER_CACHE2_BENCHMARK(HT) BENCHMARK_TEMPLATE(BM_cache2, HT<td::uint64, td::uint64>);
|
||||
#define REGISTER_CACHE3_BENCHMARK(HT) BENCHMARK_TEMPLATE(BM_cache3, HT<td::uint64, td::uint64>)->Range(1, 1 << 23);
|
||||
#define REGISTER_ERASE_ALL_BENCHMARK(HT) BENCHMARK_TEMPLATE(BM_erase_all_with_begin, HT<td::uint64, td::uint64>);
|
||||
#define REGISTER_REMOVE_IF_SLOW_BENCHMARK(HT) BENCHMARK_TEMPLATE(BM_remove_if_slow, HT<td::uint64, td::uint64>);
|
||||
|
||||
FOR_EACH_TABLE(REGISTER_CACHE3_BENCHMARK)
|
||||
FOR_EACH_TABLE(REGISTER_CACHE_BENCHMARK)
|
||||
|
@ -460,12 +463,8 @@ FOR_EACH_TABLE(REGISTER_EMPLACE_BENCHMARK)
|
|||
FOR_EACH_TABLE(REGISTER_GET_BENCHMARK)
|
||||
FOR_EACH_TABLE(REGISTER_FIND_BENCHMARK)
|
||||
|
||||
|
||||
|
||||
#define REGISTER_(X) BENCHMARK(X<HT<td::uint64, td:uint64>);
|
||||
#define REGISTER(X) FOR_EACH_TABLE(REGISTER_(X))
|
||||
|
||||
#define RUN_CREATE_BENCHMARK(HT) benchmark_create<HT<td::uint64, td::uint64>>(#HT);
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
// FOR_EACH_TABLE(RUN_CREATE_BENCHMARK);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user