From e8f1b85d7441a09fa30f27c720e5dff4f2b1aa71 Mon Sep 17 00:00:00 2001 From: Dennis Brentjes Date: Sun, 10 Jun 2018 14:24:29 +0200 Subject: Adds a microbenchmark executable. --- microbench/microbench.cpp | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 microbench/microbench.cpp (limited to 'microbench/microbench.cpp') diff --git a/microbench/microbench.cpp b/microbench/microbench.cpp new file mode 100644 index 0000000..0d21e5f --- /dev/null +++ b/microbench/microbench.cpp @@ -0,0 +1,41 @@ + +#include "api.h" + +#include +#include +#include + +int main(int, char*[]) { + struct Api api = get_implementation(); + + size_t nr_test = 10000; + + std::vector elements(nr_test); + + boost::timer::cpu_timer timer; + timer.start(); + + for(auto&& el : elements) { + el = api.get_group_element(true); + } + + auto random_time = timer.elapsed().user; + + for(size_t i = 0; i < nr_test; i++) { + elements[i] = api.combine(elements[i], elements[(i+1) % nr_test], true); + } + + auto combine_time = timer.elapsed().user - random_time; + + for(size_t i = 0; i < nr_test; i++) { + elements[i] = api.uncombine(elements[i], elements[(i+1) % nr_test], true); + } + + auto uncombine_time = timer.elapsed().user - combine_time; + timer.stop(); + + std::cout << "Micro Benchmark:" << std::endl + << "Random:\t\t" << random_time / 1000000.0 << " ms" << std::endl + << "Combine:\t" << combine_time / 1000000.0 << " ms" << std::endl + << "Uncombine:\t" << uncombine_time / 1000000.0 << " ms" << std::endl; +} -- cgit v1.2.3-70-g09d2