summaryrefslogtreecommitdiff
path: root/tests/fixed-benchmark.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fixed-benchmark.c')
-rw-r--r--tests/fixed-benchmark.c107
1 files changed, 0 insertions, 107 deletions
diff --git a/tests/fixed-benchmark.c b/tests/fixed-benchmark.c
deleted file mode 100644
index 277ecce..0000000
--- a/tests/fixed-benchmark.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright © 2012 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <time.h>
-#include <assert.h>
-#include "wayland-private.h"
-
-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;
-
- for (f = 0; f < INT32_MAX; f++)
- global_d = wl_fixed_to_double(f);
-}
-
-static void
-mul_conversion(void)
-{
- wl_fixed_t f;
-
- /* This will get optimized into multiplication by 1/256 */
- for (f = 0; f < INT32_MAX; f++)
- global_d = f / 256.0;
-}
-
-double factor = 256.0;
-
-static void
-div_conversion(void)
-{
- wl_fixed_t f;
-
- for (f = 0; f < INT32_MAX; f++)
- global_d = f / factor;
-}
-
-static void
-benchmark(const char *s, void (*f)(void))
-{
- struct timespec start, stop, elapsed;
-
- clock_gettime(CLOCK_MONOTONIC, &start);
- f();
- clock_gettime(CLOCK_MONOTONIC, &stop);
-
- elapsed.tv_sec = stop.tv_sec - start.tv_sec;
- elapsed.tv_nsec = stop.tv_nsec - start.tv_nsec;
- if (elapsed.tv_nsec < 0) {
- elapsed.tv_nsec += 1000000000;
- elapsed.tv_sec--;
- }
- printf("benchmarked %s:\t%ld.%09lds\n",
- s, elapsed.tv_sec, elapsed.tv_nsec);
-}
-
-int main(void)
-{
- benchmark("noop", noop_conversion);
- benchmark("magic", magic_conversion);
- benchmark("div", div_conversion);
- benchmark("mul", mul_conversion);
-
- return 0;
-}