diff options
author | Alexey Salmin <alexey.salmin@gmail.com> | 2022-02-10 16:49:37 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:49:37 +0300 |
commit | 71af077a5dfe7e9f932a508422c2dac81a57ebc0 (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /util/string/benchmark/join/main.cpp | |
parent | 3c5b1607b38f637d2f3313791ed25c2e080d2647 (diff) | |
download | ydb-71af077a5dfe7e9f932a508422c2dac81a57ebc0.tar.gz |
Restoring authorship annotation for Alexey Salmin <alexey.salmin@gmail.com>. Commit 2 of 2.
Diffstat (limited to 'util/string/benchmark/join/main.cpp')
-rw-r--r-- | util/string/benchmark/join/main.cpp | 160 |
1 files changed, 80 insertions, 80 deletions
diff --git a/util/string/benchmark/join/main.cpp b/util/string/benchmark/join/main.cpp index 94466069d4..1a8633d3a8 100644 --- a/util/string/benchmark/join/main.cpp +++ b/util/string/benchmark/join/main.cpp @@ -1,70 +1,70 @@ #include <library/cpp/testing/benchmark/bench.h> - -#include <util/generic/function.h> -#include <util/generic/singleton.h> -#include <util/generic/vector.h> -#include <util/generic/xrange.h> -#include <util/random/fast.h> -#include <util/string/cast.h> -#include <util/string/join.h> - -namespace { - // This class assigns random values to variadic lists of variables of different types. - // It can be used to randomize a tuple via Apply() (arcadia version of std::apply). - class TRandomizer { - public: - TRandomizer(ui64 seed) - : Prng(seed) - { - } - - void Randomize(ui16& i) { - i = static_cast<ui16>(Prng.GenRand()); - } - - void Randomize(ui32& i) { - i = static_cast<ui32>(Prng.GenRand()); - } - - void Randomize(double& d) { - d = Prng.GenRandReal4() + Prng.Uniform(Max<ui16>()); - } - - void Randomize(TString& s) { - s = ::ToString(Prng.GenRand()); - } - + +#include <util/generic/function.h> +#include <util/generic/singleton.h> +#include <util/generic/vector.h> +#include <util/generic/xrange.h> +#include <util/random/fast.h> +#include <util/string/cast.h> +#include <util/string/join.h> + +namespace { + // This class assigns random values to variadic lists of variables of different types. + // It can be used to randomize a tuple via Apply() (arcadia version of std::apply). + class TRandomizer { + public: + TRandomizer(ui64 seed) + : Prng(seed) + { + } + + void Randomize(ui16& i) { + i = static_cast<ui16>(Prng.GenRand()); + } + + void Randomize(ui32& i) { + i = static_cast<ui32>(Prng.GenRand()); + } + + void Randomize(double& d) { + d = Prng.GenRandReal4() + Prng.Uniform(Max<ui16>()); + } + + void Randomize(TString& s) { + s = ::ToString(Prng.GenRand()); + } + template <typename T, typename... TArgs> - void Randomize(T& t, TArgs&... args) { - Randomize(t); - Randomize(args...); - } - - private: - TFastRng<ui64> Prng; - }; - + void Randomize(T& t, TArgs&... args) { + Randomize(t); + Randomize(args...); + } + + private: + TFastRng<ui64> Prng; + }; + template <size_t N, typename... T> - struct TExamplesHolder { + struct TExamplesHolder { using TExamples = TVector<std::tuple<T...>>; - TExamples Examples; - - TExamplesHolder() - : Examples(N) - { - TRandomizer r{N * sizeof(typename TExamples::value_type) * 42}; - for (auto& x : Examples) { + TExamples Examples; + + TExamplesHolder() + : Examples(N) + { + TRandomizer r{N * sizeof(typename TExamples::value_type) * 42}; + for (auto& x : Examples) { Apply([&r](T&... t) { r.Randomize(t...); }, x); - } - } - }; - + } + } + }; + template <typename... TArgs> - TString JoinTuple(std::tuple<TArgs...> t) { - return Apply([](TArgs... x) -> TString { return Join("-", x...); }, t); - } -} - + TString JoinTuple(std::tuple<TArgs...> t) { + return Apply([](TArgs... x) -> TString { return Join("-", x...); }, t); + } +} + #define DEFINE_BENCHMARK(count, types, ...) \ Y_CPU_BENCHMARK(Join_##count##_##types, iface) { \ const auto& examples = Default<TExamplesHolder<count, __VA_ARGS__>>().Examples; \ @@ -74,22 +74,22 @@ namespace { Y_DO_NOT_OPTIMIZE_AWAY(JoinTuple(e)); \ } \ } \ - } - -DEFINE_BENCHMARK(100, SS, TString, TString); -DEFINE_BENCHMARK(100, SSS, TString, TString, TString); -DEFINE_BENCHMARK(100, SSSSS, TString, TString, TString, TString, TString); - -DEFINE_BENCHMARK(100, ss, ui16, ui16); -DEFINE_BENCHMARK(100, SsS, TString, ui16, TString); -DEFINE_BENCHMARK(100, SsSsS, TString, ui16, TString, ui16, TString); - -DEFINE_BENCHMARK(100, ii, ui32, ui32); -DEFINE_BENCHMARK(100, SiS, TString, ui32, TString); -DEFINE_BENCHMARK(100, SiSiS, TString, ui32, TString, ui32, TString); - -DEFINE_BENCHMARK(100, dd, double, double); -DEFINE_BENCHMARK(100, SdS, TString, double, TString); -DEFINE_BENCHMARK(100, SdSdS, TString, double, TString, double, TString); - -#undef DEFINE_BENCHMARK + } + +DEFINE_BENCHMARK(100, SS, TString, TString); +DEFINE_BENCHMARK(100, SSS, TString, TString, TString); +DEFINE_BENCHMARK(100, SSSSS, TString, TString, TString, TString, TString); + +DEFINE_BENCHMARK(100, ss, ui16, ui16); +DEFINE_BENCHMARK(100, SsS, TString, ui16, TString); +DEFINE_BENCHMARK(100, SsSsS, TString, ui16, TString, ui16, TString); + +DEFINE_BENCHMARK(100, ii, ui32, ui32); +DEFINE_BENCHMARK(100, SiS, TString, ui32, TString); +DEFINE_BENCHMARK(100, SiSiS, TString, ui32, TString, ui32, TString); + +DEFINE_BENCHMARK(100, dd, double, double); +DEFINE_BENCHMARK(100, SdS, TString, double, TString); +DEFINE_BENCHMARK(100, SdSdS, TString, double, TString, double, TString); + +#undef DEFINE_BENCHMARK |