From 32ec041333fd6075e5dfeb7797b6d68f88f5e0aa Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Tue, 15 May 2012 10:29:12 +0300 Subject: [PATCH] tests: add noop to fixed-benchmark I was just curious of how much the looping takes time without conversion, so I added this. My results on Intel(R) Core(TM) i5-2410M CPU @ 2.30GHz: benchmarked noop: 1.876349827s benchmarked magic: 2.245844470s benchmarked div: 12.709085309s benchmarked mul: 7.504838141s Mul seems to take 15x the time magic does, cool! Btw. the simple default cast of int32_t to double is slower than magic for me, hence the use of union. Signed-off-by: Pekka Paalanen --- tests/fixed-benchmark.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/fixed-benchmark.c b/tests/fixed-benchmark.c index 3f7aae39..0d7abd0a 100644 --- a/tests/fixed-benchmark.c +++ b/tests/fixed-benchmark.c @@ -29,6 +29,21 @@ volatile double global_d; +static void +noop_conversion(void) +{ + wl_fixed_t f; + union { + int64_t i; + double d; + } u; + + for (f = 0; f < INT32_MAX; f++) { + u.i = f; + global_d = u.d; + } +} + static void magic_conversion(void) { @@ -80,6 +95,7 @@ benchmark(const char *s, void (*f)(void)) int main(int argc, char *argv[]) { + benchmark("noop", noop_conversion); benchmark("magic", magic_conversion); benchmark("div", div_conversion); benchmark("mul", mul_conversion);