diff options
author | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-04-27 10:04:47 +0300 |
---|---|---|
committer | arcadia-devtools <arcadia-devtools@yandex-team.ru> | 2022-04-27 10:04:47 +0300 |
commit | 0cab8da2b5ac8c6870c24756e16e6f8151ce1454 (patch) | |
tree | 1b3dc2de8f1f475cf9b6fdcf9d52ed8e271f4e5b /library/cpp/yson/node/benchmark/reserve.cpp | |
parent | f8cb939ce134ab4402acd871c05f85ee76fb1a2e (diff) | |
download | ydb-0cab8da2b5ac8c6870c24756e16e6f8151ce1454.tar.gz |
intermediate changes
ref:6498985c15da3fb6f4b628fbe715a78c29dba393
Diffstat (limited to 'library/cpp/yson/node/benchmark/reserve.cpp')
-rw-r--r-- | library/cpp/yson/node/benchmark/reserve.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/library/cpp/yson/node/benchmark/reserve.cpp b/library/cpp/yson/node/benchmark/reserve.cpp new file mode 100644 index 0000000000..d9600e1224 --- /dev/null +++ b/library/cpp/yson/node/benchmark/reserve.cpp @@ -0,0 +1,60 @@ +#include <benchmark/benchmark.h> + +#include <library/cpp/yson/node/node_builder.h> + +using namespace NYT; + +static void BM_Map(benchmark::State& state, const std::tuple<int, bool>& input) { + for (auto _ : state) { + TNode node; + TNodeBuilder builder(&node); + if (std::get<1>(input)) { + builder.OnBeginMap(std::get<0>(input)); + } else { + builder.OnBeginMap(); + } + for (auto i = 0; i < std::get<0>(input); ++i) { + builder.OnKeyedItem(ToString(i)); + builder.OnUint64Scalar(i); + } + builder.OnEndMap(); + } +} + +static void BM_List(benchmark::State& state, const std::tuple<int, bool>& input) { + for (auto _ : state) { + TNode node; + TNodeBuilder builder(&node); + if (std::get<1>(input)) { + builder.OnBeginList(std::get<0>(input)); + } else { + builder.OnBeginList(); + } + for (auto i = 0; i < std::get<0>(input); ++i) { + builder.OnListItem(); + builder.OnUint64Scalar(i); + } + builder.OnEndList(); + } +} + +BENCHMARK_CAPTURE(BM_Map, map_10, std::make_tuple(10u, false)); +BENCHMARK_CAPTURE(BM_Map, map_100, std::make_tuple(100u, false)); +BENCHMARK_CAPTURE(BM_Map, map_300, std::make_tuple(300u, false)); +BENCHMARK_CAPTURE(BM_Map, map_500, std::make_tuple(500u, false)); +BENCHMARK_CAPTURE(BM_Map, map_1000, std::make_tuple(1000u, false)); +BENCHMARK_CAPTURE(BM_Map, map_reserve_10, std::make_tuple(10u, true)); +BENCHMARK_CAPTURE(BM_Map, map_reserve_100, std::make_tuple(100u, true)); +BENCHMARK_CAPTURE(BM_Map, map_reserve_300, std::make_tuple(300u, true)); +BENCHMARK_CAPTURE(BM_Map, map_reserve_500, std::make_tuple(500u, true)); +BENCHMARK_CAPTURE(BM_Map, map_reserve_1000, std::make_tuple(1000u, true)); +BENCHMARK_CAPTURE(BM_List, list_10, std::make_tuple(10u, false)); +BENCHMARK_CAPTURE(BM_List, list_100, std::make_tuple(100u, false)); +BENCHMARK_CAPTURE(BM_List, list_300, std::make_tuple(300u, false)); +BENCHMARK_CAPTURE(BM_List, list_500, std::make_tuple(500u, false)); +BENCHMARK_CAPTURE(BM_List, list_1000, std::make_tuple(1000u, false)); +BENCHMARK_CAPTURE(BM_List, list_reserve_10, std::make_tuple(10u, true)); +BENCHMARK_CAPTURE(BM_List, list_reserve_100, std::make_tuple(100u, true)); +BENCHMARK_CAPTURE(BM_List, list_reserve_300, std::make_tuple(300u, true)); +BENCHMARK_CAPTURE(BM_List, list_reserve_500, std::make_tuple(500u, true)); +BENCHMARK_CAPTURE(BM_List, list_reserve_1000, std::make_tuple(1000u, true)); |