Stats benchmarks
This commit is contained in:
parent
cc1fc0da93
commit
2f9703fca2
2 changed files with 50 additions and 1 deletions
|
@ -1,4 +1,4 @@
|
|||
add_executable(benchmarks entry.cpp)
|
||||
add_executable(benchmarks entry.cpp stats.cpp)
|
||||
|
||||
target_link_libraries(benchmarks test_common benchmark::benchmark)
|
||||
|
||||
|
|
49
nano/benchmarks/stats.cpp
Normal file
49
nano/benchmarks/stats.cpp
Normal file
|
@ -0,0 +1,49 @@
|
|||
#include <nano/lib/enum_util.hpp>
|
||||
#include <nano/lib/logging.hpp>
|
||||
#include <nano/lib/stats.hpp>
|
||||
|
||||
#include <random>
|
||||
|
||||
#include <benchmark/benchmark.h>
|
||||
|
||||
static void BM_stats_inc_single (benchmark::State & state)
|
||||
{
|
||||
nano::logger logger;
|
||||
nano::stats stats{ logger };
|
||||
|
||||
for (auto _ : state)
|
||||
{
|
||||
stats.inc (nano::stat::type::ledger, nano::stat::detail::open);
|
||||
}
|
||||
}
|
||||
|
||||
BENCHMARK (BM_stats_inc_single);
|
||||
BENCHMARK (BM_stats_inc_single)->Threads (10);
|
||||
|
||||
static void BM_stats_inc_random (benchmark::State & state)
|
||||
{
|
||||
nano::logger logger;
|
||||
nano::stats stats{ logger };
|
||||
|
||||
auto random_subset = [] (auto elements, size_t count) -> std::vector<typename decltype (elements)::value_type> {
|
||||
std::shuffle (elements.begin (), elements.end (), std::mt19937 (std::random_device () ()));
|
||||
return { elements.begin (), elements.begin () + std::min (count, elements.size ()) };
|
||||
};
|
||||
|
||||
auto stat_types = random_subset (nano::enum_util::values<nano::stat::type> (), state.range (0));
|
||||
auto stat_details = random_subset (nano::enum_util::values<nano::stat::detail> (), state.range (1));
|
||||
|
||||
size_t type_index = 0;
|
||||
size_t detail_index = 0;
|
||||
|
||||
for (auto _ : state)
|
||||
{
|
||||
stats.inc (stat_types[type_index], stat_details[detail_index]);
|
||||
|
||||
type_index = (type_index + 1) % stat_types.size ();
|
||||
detail_index = (detail_index + 1) % stat_details.size ();
|
||||
}
|
||||
}
|
||||
|
||||
BENCHMARK (BM_stats_inc_random)->Args ({ 32, 32 });
|
||||
BENCHMARK (BM_stats_inc_random)->Args ({ 32, 32 })->Threads (10);
|
Loading…
Add table
Add a link
Reference in a new issue