From 1bdf83262a125a40efc2b07cacec0825254fcfd2 Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Mon, 21 Dec 2020 14:42:06 +0100 Subject: Added cdeq benchmark --- benchmarks/cdeq_benchmark.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 benchmarks/cdeq_benchmark.cpp (limited to 'benchmarks/cdeq_benchmark.cpp') diff --git a/benchmarks/cdeq_benchmark.cpp b/benchmarks/cdeq_benchmark.cpp new file mode 100644 index 00000000..fd01ad8b --- /dev/null +++ b/benchmarks/cdeq_benchmark.cpp @@ -0,0 +1,55 @@ +#include +#include +#include +#include +#include + +enum {N = 200000000, M = 10000, P = 5000, R = 100}; +using_cdeq(i, int); + +void test1() { + clock_t t1 = clock(), t2, t3; + crand_t rng = crand_init(0); + std::deque deq; + for (size_t i = 1; i < N; i++) { + deq.push_front(crand_next(&rng)); + if (i % M == 0) + for (int j = 0; j < P; j++) + deq.pop_back(); + } + size_t n = deq.size(); + t2 = clock(); + printf("std::deque push/pop: %5.2f sec, sz=%zu", (float)(t2 - t1) / CLOCKS_PER_SEC, n); + fflush(stdout); + size_t sum = 0; + c_forrange (R) c_forrange (i, n) + sum += deq[i]; + t3 = clock(); + printf(" sum: %5.2f sec, val=%zu\n", (float)(t3 - t2) / CLOCKS_PER_SEC, sum); +} + +void test2() { + clock_t t1 = clock(), t2, t3; + crand_t rng = crand_init(0); + cdeq_i deq = cdeq_inits; + for (size_t i = 1; i < N; i++) { + cdeq_i_push_front(&deq, crand_next(&rng)); + if (i % M == 0) + for (int j = 0; j < P; j++) + cdeq_i_pop_back(&deq); + } + size_t n = cdeq_i_size(deq); + t2 = clock(); + printf("stc/cdeq_i push/pop: %5.2f sec, sz=%zu", (float)(t2 - t1) / CLOCKS_PER_SEC, n); + size_t sum = 0; + c_forrange (R) c_forrange (i, n) + sum += deq.data[i]; + t3 = clock(); + printf(" sum: %5.2f sec, val=%zu\n", (float)(t3 - t2) / CLOCKS_PER_SEC, sum); +} + +int main() +{ + test1(); + test2(); +} -- cgit v1.2.3