Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

55 рядки
1.3 KiB

2 роки тому
  1. #include <iostream>
  2. #include "ChaPRNG.h"
  3. #include <benchmark/benchmark.h>
  4. #include <chrono>
  5. #include <random>
  6. using namespace std::chrono_literals;
  7. template<int T, bool u, bool v>
  8. static void PRNGBuild(benchmark::State& state) {
  9. std::random_device dev;
  10. std::array<uint32_t,12> seed{
  11. dev(),dev(),dev(),dev(),
  12. dev(),dev(),dev(),dev(),
  13. dev(),dev(),dev(),dev()
  14. };
  15. ChaPRNG<T,u,v> prng(seed);
  16. for(auto _ : state)
  17. prng();
  18. }
  19. BENCHMARK(PRNGBuild<8, false, false>);
  20. BENCHMARK(PRNGBuild<12, false, false>);
  21. BENCHMARK(PRNGBuild<16, false, false>);
  22. BENCHMARK(PRNGBuild<20, false, false>);
  23. BENCHMARK(PRNGBuild<8, true, false>);
  24. BENCHMARK(PRNGBuild<12, true, false>);
  25. BENCHMARK(PRNGBuild<16, true, false>);
  26. BENCHMARK(PRNGBuild<20, true, false>);
  27. BENCHMARK(PRNGBuild<8, false, true>);
  28. BENCHMARK(PRNGBuild<12, false, true>);
  29. BENCHMARK(PRNGBuild<16, false, true>);
  30. BENCHMARK(PRNGBuild<20, false, true>);
  31. BENCHMARK(PRNGBuild<4, true, true>);
  32. BENCHMARK(PRNGBuild<6, true, true>);
  33. BENCHMARK(PRNGBuild<8, true, true>);
  34. BENCHMARK(PRNGBuild<12, true, true>);
  35. BENCHMARK(PRNGBuild<16, true, true>);
  36. BENCHMARK(PRNGBuild<20, true, true>);
  37. static void std_mtPRNGBuild(benchmark::State& state) {
  38. std::random_device dev;
  39. std::mt19937 prng(dev());
  40. for(auto _ : state)
  41. prng();
  42. }
  43. BENCHMARK(std_mtPRNGBuild);
  44. BENCHMARK_MAIN();