/
githubmirror
/
nbs
Обзор
Документация
Войти
/
githubmirror
/
nbs
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
library/cpp/yson/node/benchmark/reserve.cpp
60 строк
2 KB
qkrorlqr
Initial NBS OpenSource export
28 апр 2023, 21:54
28 апр 2023, 21:54
783a858
Код
Авторство
О чём код?
#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));