summaryrefslogtreecommitdiff
path: root/cleanbench.h
diff options
context:
space:
mode:
authorMatt Turner <mattst88@gmail.com>2008-11-14 04:56:19 +0000
committerMatt Turner <mattst88@gmail.com>2008-11-14 04:56:19 +0000
commitfdb0f96aa0254eb5864d34fb3ae734e178935a3f (patch)
tree14e73a2b856f9d9771e4dca1dcb8b11083e1fb88 /cleanbench.h
parentf067d71ef7e5bc4e670641b0499f82384f95b764 (diff)
-- Rename nbench0.{c,h} to cleanbench.{c,h}
-- Makefile now generates cleanbench git-svn-id: svn://mattst88.com/svn/cleanbench/trunk@32 0d43b9a7-5ab2-4d7b-af9d-f64450cef757
Diffstat (limited to 'cleanbench.h')
-rw-r--r--cleanbench.h301
1 files changed, 301 insertions, 0 deletions
diff --git a/cleanbench.h b/cleanbench.h
new file mode 100644
index 0000000..278de90
--- /dev/null
+++ b/cleanbench.h
@@ -0,0 +1,301 @@
+/*
+** cleanbench.h
+** Header for cleanbench.c
+** BYTEmark (tm)
+** BYTE's Native Mode Benchmarks
+** Rick Grehan, BYTE Magazine
+**
+** Creation:
+** Revision: 3/95;10/95
+** 10/95 - Added memory array & alignment -- RG
+**
+** DISCLAIMER
+** The source, executable, and documentation files that comprise
+** the BYTEmark benchmarks are made available on an "as is" basis.
+** This means that we at BYTE Magazine have made every reasonable
+** effort to verify that the there are no errors in the source and
+** executable code. We cannot, however, guarantee that the programs
+** are error-free. Consequently, McGraw-HIll and BYTE Magazine make
+** no claims in regard to the fitness of the source code, executable
+** code, and documentation of the BYTEmark.
+** Furthermore, BYTE Magazine, McGraw-Hill, and all employees
+** of McGraw-Hill cannot be held responsible for any damages resulting
+** from the use of this code or the results obtained from using
+** this code.
+*/
+
+/*
+** Following should be modified accordingly per each
+** compilation.
+*/
+char *sysname="You can enter your system description in cleanbench.h";
+char *compilername="It then will be printed here after you recompile";
+char *compilerversion="Have a nice day";
+
+/* Parameter flags. Must coincide with parameter names array
+** which appears below. */
+#define PF_GMTICKS 0 /* GLOBALMINTICKS */
+#define PF_MINSECONDS 1 /* MINSECONDS */
+#define PF_ALLSTATS 2 /* ALLSTATS */
+#define PF_OUTFILE 3 /* OUTFILE */
+#define PF_CUSTOMRUN 4 /* CUSTOMRUN */
+#define PF_DONUM 5 /* DONUMSORT */
+#define PF_NUMNUMA 6 /* NUMNUMARRAYS */
+#define PF_NUMASIZE 7 /* NUMARRAYSIZE */
+#define PF_NUMMINS 8 /* NUMMINSECONDS */
+#define PF_DOSTR 9 /* DOSTRINGSORT */
+#define PF_STRASIZE 10 /* STRARRAYSIZE */
+#define PF_NUMSTRA 11 /* NUMSTRARRAYS */
+#define PF_STRMINS 12 /* STRMINSECONDS */
+#define PF_DOBITF 13 /* DOBITFIELD */
+#define PF_NUMBITOPS 14 /* NUMBITOPS */
+#define PF_BITFSIZE 15 /* BITFIELDSIZE */
+#define PF_BITMINS 16 /* BITMINSECONDS */
+#define PF_DOEMF 17 /* DOEMF */
+#define PF_EMFASIZE 18 /* EMFARRAYSIZE */
+#define PF_EMFLOOPS 19 /* EMFLOOPS */
+#define PF_EMFMINS 20 /* EMFMINSECOND */
+#define PF_DOFOUR 21 /* DOFOUR */
+#define PF_FOURASIZE 22 /* FOURASIZE */
+#define PF_FOURMINS 23 /* FOURMINSECONDS */
+#define PF_DOASSIGN 24 /* DOASSIGN */
+#define PF_AARRAYS 25 /* ASSIGNARRAYS */
+#define PF_ASSIGNMINS 26 /* ASSIGNMINSECONDS */
+#define PF_DOIDEA 27 /* DOIDEA */
+#define PF_IDEAASIZE 28 /* IDEAARRAYSIZE */
+#define PF_IDEALOOPS 29 /* IDEALOOPS */
+#define PF_IDEAMINS 30 /* IDEAMINSECONDS */
+#define PF_DOHUFF 31 /* DOHUFF */
+#define PF_HUFFASIZE 32 /* HUFFARRAYSIZE */
+#define PF_HUFFLOOPS 33 /* HUFFLOOPS */
+#define PF_HUFFMINS 34 /* HUFFMINSECONDS */
+#define PF_DONNET 35 /* DONNET */
+#define PF_NNETLOOPS 36 /* NNETLOOPS */
+#define PF_NNETMINS 37 /* NNETMINSECONDS */
+#define PF_DOLU 38 /* DOLU */
+#define PF_LUNARRAYS 39 /* LUNUMARRAYS */
+#define PF_LUMINS 40 /* LUMINSECONDS */
+#define PF_ALIGN 41 /* ALIGN */
+
+#define MAXPARAM 41
+
+/* Tests-to-do flags...must coincide with test. */
+#define TF_NUMSORT 0
+#define TF_SSORT 1
+#define TF_BITOP 2
+#define TF_FPEMU 3
+#define TF_FFPU 4
+#define TF_ASSIGN 5
+#define TF_IDEA 6
+#define TF_HUFF 7
+#define TF_NNET 8
+#define TF_LU 9
+
+#define NUMTESTS 10
+
+/*
+** GLOBALS
+*/
+
+#define BUF_SIZ 1024
+
+/*
+** Test names
+*/
+char *ftestnames[] = {
+ "NUMERIC SORT ",
+ "STRING SORT ",
+ "BITFIELD ",
+ "FP EMULATION ",
+ "FOURIER ",
+ "ASSIGNMENT ",
+ "IDEA ",
+ "HUFFMAN ",
+ "NEURAL NET ",
+ "LU DECOMPOSITION" };
+
+/*
+** Indexes -- Baseline is DELL Pentium XP90
+** 11/28/94
+*/
+double bindex[] = {
+ 38.993, /* Numeric sort */
+ 2.238, /* String sort */
+ 5829704, /* Bitfield */
+ 2.084, /* FP Emulation */
+ 879.278, /* Fourier */
+ .2628, /* Assignment */
+ 65.382, /* IDEA */
+ 36.062, /* Huffman */
+ .6225, /* Neural Net */
+ 19.3031 }; /* LU Decomposition */
+
+/*
+** Indices -- Baseline is a AMD K6-233, 32MB RAM (60ns SDRAM),512k L2 cache,
+** Linux kernel 2.0.32, libc-5.4.38, gcc-2.7.2.3)
+** Nov/30/97
+*/
+double lx_bindex[] = {
+ 118.73, /* Numeric sort */
+ 14.459, /* String sort */
+ 27910000, /* Bitfield */
+ 9.0314, /* FP Emulation */
+ 1565.5, /* Fourier */
+ 1.0132, /* Assignment */
+ 220.21, /* IDEA */
+ 112.93, /* Huffman */
+ 1.4799, /* Neural Net */
+ 26.732}; /* LU Decomposition */
+
+/* Parameter names */
+char *paramnames[]= {
+ "GLOBALMINTICKS",
+ "MINSECONDS",
+ "ALLSTATS",
+ "OUTFILE",
+ "CUSTOMRUN",
+ "DONUMSORT",
+ "NUMNUMARRAYS",
+ "NUMARRAYSIZE",
+ "NUMMINSECONDS",
+ "DOSTRINGSORT",
+ "STRARRAYSIZE",
+ "NUMSTRARRAYS",
+ "STRMINSECONDS",
+ "DOBITFIELD",
+ "NUMBITOPS",
+ "BITFIELDSIZE",
+ "BITMINSECONDS",
+ "DOEMF",
+ "EMFARRAYSIZE",
+ "EMFLOOPS",
+ "EMFMINSECONDS",
+ "DOFOUR",
+ "FOURSIZE",
+ "FOURMINSECONDS",
+ "DOASSIGN",
+ "ASSIGNARRAYS",
+ "ASSIGNMINSECONDS",
+ "DOIDEA",
+ "IDEARRAYSIZE",
+ "IDEALOOPS",
+ "IDEAMINSECONDS",
+ "DOHUFF",
+ "HUFARRAYSIZE",
+ "HUFFLOOPS",
+ "HUFFMINSECONDS",
+ "DONNET",
+ "NNETLOOPS",
+ "NNETMINSECONDS",
+ "DOLU",
+ "LUNUMARRAYS",
+ "LUMINSECONDS",
+ "ALIGN" };
+
+/*
+** Following array is a collection of flags indicating which
+** tests to perform.
+*/
+int tests_to_do[NUMTESTS];
+
+/*
+** Buffer for holding output text.
+*/
+char buffer[BUF_SIZ];
+
+/*
+** Global parameters.
+*/
+unsigned long global_min_ticks; /* Minimum ticks */
+unsigned long global_min_seconds; /* Minimum seconds tests run */
+int global_allstats; /* Statistics dump flag */
+char global_ofile_name[BUF_SIZ];/* Output file name */
+FILE *global_ofile; /* Output file */
+int global_custrun; /* Custom run flag */
+int write_to_file; /* Write output to file */
+int global_align; /* Memory alignment */
+
+/*
+** Following are global structures, one built for
+** each of the tests.
+*/
+SortStruct global_numsortstruct; /* For numeric sort */
+SortStruct global_strsortstruct; /* For string sort */
+BitOpStruct global_bitopstruct; /* For bitfield operations */
+EmFloatStruct global_emfloatstruct; /* For emul. float. point */
+FourierStruct global_fourierstruct; /* For fourier test */
+AssignStruct global_assignstruct; /* For assignment algorithm */
+IDEAStruct global_ideastruct; /* For IDEA encryption */
+HuffStruct global_huffstruct; /* For Huffman compression */
+NNetStruct global_nnetstruct; /* For Neural Net */
+LUStruct global_lustruct; /* For LU decomposition */
+
+/*
+** The following array of function struct pointers lets
+** us very rapidly map a function to its controlling
+** data structure. NOTE: These must match the "TF_xxx"
+** constants above.
+*/
+void *global_fstruct[] =
+{ (void *)&global_numsortstruct,
+ (void *)&global_strsortstruct,
+ (void *)&global_bitopstruct,
+ (void *)&global_emfloatstruct,
+ (void *)&global_fourierstruct,
+ (void *)&global_assignstruct,
+ (void *)&global_ideastruct,
+ (void *)&global_huffstruct,
+ (void *)&global_nnetstruct,
+ (void *)&global_lustruct };
+
+/*
+** PROTOTYPES
+*/
+static int parse_arg(char *argptr);
+static void display_help(char *progname);
+static void read_comfile(FILE *cfile);
+static int getflag(char *cptr);
+static void strtoupper(char *s);
+static void set_request_secs(void);
+static int bench_with_confidence(int fid,
+ double *mean, double *stdev, unsigned long *numtries);
+/*
+static int seek_confidence(double scores[5],
+ double *newscore, double *c_half_interval,
+ double *smean,double *sdev);
+*/
+static int calc_confidence(double scores[],
+ int num_scores,
+ double *c_half_interval,double *smean,
+ double *sdev);
+static double getscore(int fid);
+static void show_stats(int bid);
+
+/*
+** EXTERNAL PROTOTYPES
+*/
+extern void DoNumSort(void);
+extern void DoStringSort(void);
+extern void DoBitops(void);
+extern void DoEmFloat(void);
+extern void DoFourier(void);
+extern void DoAssign(void);
+extern void DoIDEA(void);
+extern void DoHuffman(void);
+extern void DoNNET(void);
+extern void DoLU(void);
+
+/*
+** Array of pointers to the benchmark functions.
+*/
+void (*funcpointer[])(void) =
+{ DoNumSort,
+ DoStringSort,
+ DoBitops,
+ DoEmFloat,
+ DoFourier,
+ DoAssign,
+ DoIDEA,
+ DoHuffman,
+ DoNNET,
+ DoLU };