summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPekka Paalanen <ppaalanen@gmail.com>2012-05-15 10:29:12 +0300
committerKristian Høgsberg <krh@bitplanet.net>2012-05-15 11:00:19 -0400
commit32ec041333fd6075e5dfeb7797b6d68f88f5e0aa (patch)
treee9b1b1467b9b3b02443dada4966252acab8f51a0
parentf5df38959b14426f648b3359821457786e43e396 (diff)
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 <ppaalanen@gmail.com>
-rw-r--r--tests/fixed-benchmark.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/fixed-benchmark.c b/tests/fixed-benchmark.c
index 3f7aae3..0d7abd0 100644
--- a/tests/fixed-benchmark.c
+++ b/tests/fixed-benchmark.c
@@ -30,6 +30,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)
{
wl_fixed_t f;
@@ -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);