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 <[email protected]> --- 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); -- 1.7.3.4 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
