From a9ce3df5c59515c12d4fcdf3b7ad43cefdf122b6 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Mon, 21 Dec 2020 14:28:56 +0100 Subject: Added some benchmarks. Fix typo in cdeq.h --- benchmarks/crand_benchmark2.cpp | 75 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 benchmarks/crand_benchmark2.cpp (limited to 'benchmarks/crand_benchmark2.cpp') diff --git a/benchmarks/crand_benchmark2.cpp b/benchmarks/crand_benchmark2.cpp new file mode 100644 index 00000000..3ae6f8ab --- /dev/null +++ b/benchmarks/crand_benchmark2.cpp @@ -0,0 +1,75 @@ +#include +#include +#include +#include + +void test1(void) +{ + enum {N = 1000000000}; + clock_t diff, before; + uint64_t sum; + + std::random_device device; + std::mt19937 rng(device()); + std::uniform_int_distribution idist(1, 10); + std::uniform_real_distribution fdist(1, 10); + + before = clock(); + sum = 0; + c_forrange (N) { + sum += rng(); + } + diff = clock() - before; + printf("std::random:\t\t%.02f, %zu\n", (float) diff / CLOCKS_PER_SEC, sum); + + before = clock(); + sum = 0; + c_forrange (N) { + sum += idist(rng); + } + diff = clock() - before; + printf("std::uniform:\t\t%.02f, %zu\n\n", (float) diff / CLOCKS_PER_SEC, sum); + + c_forrange (30) printf("%02zd ", idist(rng)); + puts(""); + c_forrange (8) printf("%f ", fdist(rng)); + puts("\n"); +} + +void test2(void) +{ + enum {N = 1000000000}; + clock_t diff, before; + uint64_t sum; + + crand_t rng = crand_init(time(NULL)); + crand_uniform_t idist = crand_uniform_init(1, 10); + crand_uniformf_t fdist = crand_uniformf_init(1, 10); + + before = clock(); + sum = 0; + c_forrange (N) { + sum += crand_next(&rng); + } + diff = clock() - before; + printf("crand_next:\t\t%.02f, %zu\n", (float) diff / CLOCKS_PER_SEC, sum); + + before = clock(); + sum = 0; + c_forrange (N) { + sum += crand_uniform(&rng, &idist); + } + diff = clock() - before; + printf("crand_uniform:\t\t%.02f, %zu\n\n", (float) diff / CLOCKS_PER_SEC, sum); + + c_forrange (30) printf("%02zd ", crand_uniform(&rng, &idist)); + puts(""); + c_forrange (8) printf("%f ", crand_uniformf(&rng, &fdist)); + puts("\n"); +} + +int main() +{ + test1(); + test2(); +} \ No newline at end of file -- cgit v1.2.3