From de7208a60eca11aa8014e3a9b698e092322aea88 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Sat, 24 Aug 2019 17:58:18 +0200 Subject: add espresso benchmark --- src/benchmarks/espresso/utility.c | 162 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 src/benchmarks/espresso/utility.c (limited to 'src/benchmarks/espresso/utility.c') diff --git a/src/benchmarks/espresso/utility.c b/src/benchmarks/espresso/utility.c new file mode 100644 index 0000000..3c140a1 --- /dev/null +++ b/src/benchmarks/espresso/utility.c @@ -0,0 +1,162 @@ +/* LINTLIBRARY */ +#include "espresso.h" +#include "copyright.h" +#include "port.h" +#include "utility.h" + +#ifdef IBM_WATC /* IBM Waterloo-C compiler (same as bsd 4.2) */ +#ifndef BSD +#define BSD +#endif +#ifndef void +#define void int +#endif +#endif + +#ifdef ultrix +#ifndef BSD +#define BSD +#endif +#endif + +#ifdef hpux +#ifndef UNIX50 +#define UNIX50 +#endif +#endif + +#ifdef aiws +#ifndef UNIX10 +#define UNIX10 +#endif +#endif + +#ifdef vms /* VAX/C compiler -- times() with 100 HZ clock */ +#ifndef UNIX100 +#define UNIX100 +#endif +#endif + +/* default */ +#if !defined(BSD) && !defined(UNIX10) && !defined(UNIX60) && !defined(UNIX100) && !defined(UNIX50) && !defined(_WIN32) +#define UNIX10 +#endif + +#ifdef BSD +#include +#include +#endif + +#ifdef UNIX10 +#include +#endif + +#ifdef UNIX50 +#include +#endif + +#ifdef UNIX60 +#include +#endif + +#ifdef UNIX100 +#include +#endif + +#ifdef _MSC_VER +#include +#include +#endif + +/* + * util_cpu_time -- return a long which represents the elapsed processor + * time in milliseconds since some constant reference + */ +long +util_cpu_time() +{ + long t = 0; + +#ifdef _MSC_VER + static uint64_t frec = 0; + if (frec == 0) + { + LARGE_INTEGER val; + BOOL ok = QueryPerformanceFrequency(&val); + assert(ok); + frec = val.QuadPart / 1000; + } + LARGE_INTEGER val; + BOOL ok = QueryPerformanceCounter(&val); + assert(ok); + t = val.QuadPart / frec; +#endif + +#ifdef BSD + struct rusage rusage; + (void) getrusage(RUSAGE_SELF, &rusage); + t = (long) rusage.ru_utime.tv_sec*1000 + rusage.ru_utime.tv_usec/1000; +#endif + +#ifdef IBMPC + long ltime; + (void) time(<ime); + t = ltime * 1000; +#endif + +#ifdef UNIX10 /* times() with 10 Hz resolution */ + struct tms buffer; + (void) times(&buffer); + t = buffer.tms_utime * 100; +#endif + +#ifdef UNIX50 /* times() with 50 Hz resolution */ + struct tms buffer; + times(&buffer); + t = buffer.tms_utime * 20; +#endif + +#ifdef UNIX60 /* times() with 60 Hz resolution */ + struct tms buffer; + times(&buffer); + t = buffer.tms_utime * 16.6667; +#endif + +#ifdef UNIX100 + struct tms buffer; /* times() with 100 Hz resolution */ + times(&buffer); + t = buffer.tms_utime * 10; +#endif + + return t; +} + + +/* + * util_print_time -- massage a long which represents a time interval in + * milliseconds, into a string suitable for output + * + * Hack for IBM/PC -- avoids using floating point + */ + +char * +util_print_time(t) +long t; +{ + static char s[40]; + + //(void) sprintf(s, "%ld.%02ld sec", 0/1000, (0%1000)/10); + (void) sprintf(s, "%ld.%03ld sec", t/1000, (t%1000)); + return s; +} + + +/* + * util_strsav -- save a copy of a string + */ +char * +util_strsav(s) +char *s; +{ + return strcpy(ALLOC(char, strlen(s)+1), s); +} -- cgit v1.2.3