From 4169222e2f6da6ab300df01df71a46e6a1c38eac Mon Sep 17 00:00:00 2001 From: Christopher Dykes Date: Tue, 11 Jul 2017 13:45:18 -0700 Subject: [PATCH] Add an sfmt19937 benchmark Summary: `__gnu_cxx::sfmt19937` is 3.5x faster than `std::mt19937` according to the benchmark. Reviewed By: yfeldblum Differential Revision: D5393697 fbshipit-source-id: bc725838dc7f62d030c7e68bc6d229042df2b46c --- folly/test/RandomBenchmark.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/folly/test/RandomBenchmark.cpp b/folly/test/RandomBenchmark.cpp index 287482e5..b0991f17 100644 --- a/folly/test/RandomBenchmark.cpp +++ b/folly/test/RandomBenchmark.cpp @@ -46,6 +46,18 @@ BENCHMARK(mt19937, n) { FOR_EACH_RANGE(i, 0, n) { doNotOptimizeAway(rng()); } } +#if FOLLY_HAVE_EXTRANDOM_SFMT19937 +BENCHMARK(sfmt19937, n) { + BenchmarkSuspender braces; + std::random_device rd; + __gnu_cxx::sfmt19937 rng(rd()); + + braces.dismiss(); + + FOR_EACH_RANGE(i, 0, n) { doNotOptimizeAway(rng()); } +} +#endif + BENCHMARK(threadprng, n) { BenchmarkSuspender braces; ThreadLocalPRNG tprng; -- 2.34.1