diff options
author | Pekka Paalanen <ppaalanen@gmail.com> | 2012-05-15 10:29:12 +0300 |
---|---|---|
committer | Kristian Høgsberg <krh@bitplanet.net> | 2012-05-15 11:00:19 -0400 |
commit | 32ec041333fd6075e5dfeb7797b6d68f88f5e0aa (patch) | |
tree | e9b1b1467b9b3b02443dada4966252acab8f51a0 /tests | |
parent | f5df38959b14426f648b3359821457786e43e396 (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>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/fixed-benchmark.c | 16 |
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); |