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>
This commit is contained in:
Pekka Paalanen 2012-05-15 10:29:12 +03:00 committed by Kristian Høgsberg
parent f5df38959b
commit 32ec041333

View file

@ -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);