Add an sfmt19937 benchmark
authorChristopher Dykes <cdykes@fb.com>
Tue, 11 Jul 2017 20:45:18 +0000 (13:45 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Tue, 11 Jul 2017 20:51:09 +0000 (13:51 -0700)
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

index 287482e5f3b9c71665fd96c05d962eea16aa6bbc..b0991f178e64c162a657d751906a11c075b858e5 100644 (file)
@@ -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;