summaryrefslogtreecommitdiff
path: root/perf
diff options
context:
space:
mode:
authorsewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9>2005-12-28 04:18:20 +0000
committersewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9>2005-12-28 04:18:20 +0000
commit422c790af193534e2aa2b59da96385afc224d2f7 (patch)
treeefd69df143e96d4679f643e38926aa9d6e2a4bb3 /perf
parentf62d496434c600653ee403f419f1459414705622 (diff)
In fbench, compute sin/cos/sqrt from "first principles", so that the
program more uniformly measures the speed of FP +/-/* load/store across different architectures. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5455 a5019735-40e9-0310-863c-91ae7b9d1cf9
Diffstat (limited to 'perf')
-rw-r--r--perf/Makefile.am4
-rw-r--r--perf/fbench.c13
2 files changed, 14 insertions, 3 deletions
diff --git a/perf/Makefile.am b/perf/Makefile.am
index de0384b7..ba8d3225 100644
--- a/perf/Makefile.am
+++ b/perf/Makefile.am
@@ -21,6 +21,6 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_builddir)/include
AM_CXXFLAGS = $(AM_CFLAGS)
# Extra stuff
-fbench_LDADD = -lm
+fbench_CFLAGS = -g -O2
+fbench_LDADD =
ffbench_LDADD = -lm
-
diff --git a/perf/fbench.c b/perf/fbench.c
index 83e573fe..79bbb3ec 100644
--- a/perf/fbench.c
+++ b/perf/fbench.c
@@ -8,6 +8,16 @@
// site is in the public domain and may be used in any manner without
// permission, restriction, attribution, or compensation."
+/* This program can be used in two ways. If INTRIG is undefined, sin,
+ cos, tan, etc, will be used as supplied by <math.h>. If it is
+ defined, then the program calculates all this stuff from first
+ principles (so to speak) and does not use the libc facilities. For
+ benchmarking purposes it seems better to avoid the libc stuff, so
+ that the inner loops (sin, sqrt) present a workload independent of
+ libc implementations on different platforms. Hence: */
+
+#define INTRIG 1
+
/*
@@ -238,6 +248,7 @@
*/
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -289,7 +300,7 @@ int itercount; /* The iteration counter for the main loop
tracing code. */
#ifndef ITERATIONS
-#define ITERATIONS /*1000*/ /*500000*/ 125000
+#define ITERATIONS /*1000*/ /*500000*/ 80000
#endif
int niter = ITERATIONS; /* Iteration counter */