#include #include #include #include #include #include #include #include // double part Y_CPU_BENCHMARK(Mersenne32_Double, p) { TMersenne rng(Seed()); for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(rng.GenRandReal1()); } } Y_CPU_BENCHMARK(Mersenne64_Double, p) { TMersenne rng(Seed()); for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(rng.GenRandReal1()); } } Y_CPU_BENCHMARK(Fast32_Double, p) { TFastRng rng(Seed()); for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(rng.GenRandReal1()); } } Y_CPU_BENCHMARK(Fast64_Double, p) { TFastRng rng(Seed()); for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(rng.GenRandReal1()); } } // integer part Y_CPU_BENCHMARK(mt19937_32, p) { std::mt19937 mt; for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(mt()); } } Y_CPU_BENCHMARK(mt19937_64, p) { std::mt19937_64 mt; for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(mt()); } } Y_CPU_BENCHMARK(Mersenne32_GenRand, p) { TMersenne rng(Seed()); for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(rng.GenRand()); } } Y_CPU_BENCHMARK(Mersenne64_GenRand, p) { TMersenne rng(Seed()); for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(rng.GenRand()); } } Y_CPU_BENCHMARK(Fast32_GenRand, p) { TFastRng rng(Seed()); for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(rng.GenRand()); } } Y_CPU_BENCHMARK(Fast64_GenRand, p) { TFastRng rng(Seed()); for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(rng.GenRand()); } } Y_CPU_BENCHMARK(StlNormal, p) { TFastRng rng(Seed()); std::normal_distribution d(1.0, 0.0); for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(d(rng)); } } Y_CPU_BENCHMARK(UtilNormal, p) { TFastRng rng(Seed()); for (auto i : xrange(0, p.Iterations())) { (void)i; Y_DO_NOT_OPTIMIZE_AWAY(NormalDistribution(rng, 1.0, 0.0)); } }