From d70c2d978c20d95062f505f31677ad724eb29de0 Mon Sep 17 00:00:00 2001 From: Mickey Rose Date: Tue, 1 Mar 2016 17:09:37 +0100 Subject: [PATCH] add benchmark for mapnik::util::normalize_angle --- benchmark/run | 1 + benchmark/src/normalize_angle.cpp | 69 +++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 benchmark/src/normalize_angle.cpp diff --git a/benchmark/run b/benchmark/run index b296fc8ce..2d4089371 100755 --- a/benchmark/run +++ b/benchmark/run @@ -28,6 +28,7 @@ run test_expression_parse 10 10000 run test_face_ptr_creation 10 1000 run test_font_registration 10 100 run test_offset_converter 10 1000 +#run normalize_angle 0 1000000 --min-duration=0.2 # commented since this is really slow on travis : ' diff --git a/benchmark/src/normalize_angle.cpp b/benchmark/src/normalize_angle.cpp new file mode 100644 index 000000000..bc137a95f --- /dev/null +++ b/benchmark/src/normalize_angle.cpp @@ -0,0 +1,69 @@ +#include "bench_framework.hpp" + +#include + +template +struct bench_func : benchmark::test_case +{ + T (* const func_)(T); + T const value_; + + bench_func(mapnik::parameters const& params, T (*func)(T), T value) + : test_case(params), func_(func), value_(value) {} + + bool validate() const { return true; } + + bool operator() () const + { + for (auto i = this->iterations_; i-- > 0; ) + { + func_(value_); + } + return true; + } +}; + +#define BENCH_FUNC1(func, value) \ + run>(#func "(" #value ")", func, value) + +int main(int argc, char** argv) +{ + return benchmark::sequencer(argc, argv) + .BENCH_FUNC1(mapnik::util::normalize_angle, +3) + .BENCH_FUNC1(mapnik::util::normalize_angle, +6) + .BENCH_FUNC1(mapnik::util::normalize_angle, +9) + .BENCH_FUNC1(mapnik::util::normalize_angle, +12) + .BENCH_FUNC1(mapnik::util::normalize_angle, +15) + .BENCH_FUNC1(mapnik::util::normalize_angle, +20) + .BENCH_FUNC1(mapnik::util::normalize_angle, +30) + .BENCH_FUNC1(mapnik::util::normalize_angle, +40) + .BENCH_FUNC1(mapnik::util::normalize_angle, +50) + .BENCH_FUNC1(mapnik::util::normalize_angle, +70) + .BENCH_FUNC1(mapnik::util::normalize_angle, +90) + .BENCH_FUNC1(mapnik::util::normalize_angle, +110) + .BENCH_FUNC1(mapnik::util::normalize_angle, +130) + .BENCH_FUNC1(mapnik::util::normalize_angle, +157) + .BENCH_FUNC1(mapnik::util::normalize_angle, +209) + .BENCH_FUNC1(mapnik::util::normalize_angle, +314) + .BENCH_FUNC1(mapnik::util::normalize_angle, +628) + .BENCH_FUNC1(mapnik::util::normalize_angle, +942) + .BENCH_FUNC1(mapnik::util::normalize_angle, -3) + .BENCH_FUNC1(mapnik::util::normalize_angle, -6) + .BENCH_FUNC1(mapnik::util::normalize_angle, -9) + .BENCH_FUNC1(mapnik::util::normalize_angle, -12) + .BENCH_FUNC1(mapnik::util::normalize_angle, -15) + .BENCH_FUNC1(mapnik::util::normalize_angle, -20) + .BENCH_FUNC1(mapnik::util::normalize_angle, -30) + .BENCH_FUNC1(mapnik::util::normalize_angle, -40) + .BENCH_FUNC1(mapnik::util::normalize_angle, -50) + .BENCH_FUNC1(mapnik::util::normalize_angle, -70) + .BENCH_FUNC1(mapnik::util::normalize_angle, -90) + .BENCH_FUNC1(mapnik::util::normalize_angle, -110) + .BENCH_FUNC1(mapnik::util::normalize_angle, -130) + .BENCH_FUNC1(mapnik::util::normalize_angle, -157) + .BENCH_FUNC1(mapnik::util::normalize_angle, -209) + .BENCH_FUNC1(mapnik::util::normalize_angle, -314) + .BENCH_FUNC1(mapnik::util::normalize_angle, -628) + .BENCH_FUNC1(mapnik::util::normalize_angle, -942) + .done(); +}