Latest Drystone Benchmarks
Chris Torek
chris at umcp-cs.UUCP
Thu Oct 17 16:41:08 AEST 1985
Here are some changes to get more accurate results under 4.2 and
4.3 BSD; and here is the result of running the benchmarks on our
shiny new 8600 (not yet even fully installed, but already running
4.3BSD... for the moment, at least):
* MACHINE MICROPROCESSOR OPERATING COMPILER DHRYSTONES/SEC.
* TYPE SYSTEM NO REG REGS
* -------------------------- ------------ ----------- ---------------
* VAX 8600 - 4.3BSD cc 7092 7153
The speed of the 8600 is quite impressive.
Oh yes, the changes. Without these I get 7142 for both `NO REG'
and `REG', by the way.
*** dry.c.old Thu Oct 17 01:55:55 1985
--- dry.c Thu Oct 17 02:23:02 1985
***************
*** 156,166 ****
#define LOOPS 50000
long time();
! long starttime;
! long benchtime;
! long nulltime;
register unsigned int i;
! starttime = time(0);
for (i = 0; i < LOOPS; ++i);
! nulltime = time(0) - starttime;
PtrGlbNext = (RecordPtr) malloc(sizeof(RecordType));
--- 156,167 ----
#define LOOPS 50000
long time();
! long starttime, startmil;
! long benchtime, benchmil;
! long nulltime, nullmil;
register unsigned int i;
! gettime(&starttime, &startmil);
for (i = 0; i < LOOPS; ++i);
! gettime(&nulltime, &nullmil);
! timesub(&nulltime, &nullmil, starttime, startmil);
PtrGlbNext = (RecordPtr) malloc(sizeof(RecordType));
***************
*** 175,179 ****
-- Start Timer --
*****************/
! starttime = time(0);
for (i = 0; i < LOOPS; ++i)
{
--- 176,180 ----
-- Start Timer --
*****************/
! gettime(&starttime, &startmil);
for (i = 0; i < LOOPS; ++i)
{
***************
*** 206,213 ****
*****************/
}
! benchtime = time(0) - starttime - nulltime;
! printf("Dhrystone time for %ld passes = %ld\n", (long) LOOPS, benchtime);
! printf("This machine benchmarks at %ld dhrystones/second\n",
! ((long) LOOPS) / benchtime);
}
--- 207,217 ----
*****************/
}
! gettime(&benchtime, &benchmil);
! timesub(&benchtime, &benchmil, starttime, startmil);
! timesub(&benchtime, &benchmil, nulltime, nullmil);
! printf("Dhrystone time for %ld passes = %ld.%03d\n", (long) LOOPS,
! benchtime, benchmil);
! printf("This machine benchmarks at %8.0f dhrystones/second\n",
! (double)LOOPS / ((double)benchtime + (benchmil / 1000.0)));
}
***************
*** 415,417 ****
--- 419,481 ----
return t;
}
+ #endif
+
+ #include <signal.h> /* horrible hack to detect 4.[23]BSD */
+ #ifdef SIGVTALRM
+ #define GETTIMEOFDAY
+ #endif
+
+ /*
+ * Gettime gets the time in seconds and milliseconds. timesub subtracts
+ * the second time (in sec, mil) from the first (sec, mil).
+ */
+ #ifndef GETTIMEOFDAY
+
+ gettime(s, m)
+ long *s, *m;
+ {
+
+ (void) time(s);
+ *m = 0;
+ }
+
+ timesub(ds, dm, s, m)
+ long *ds, *dm, s, m;
+ {
+
+ *ds -= s;
+ }
+
+ #else
+
+ #include <sys/time.h>
+
+ gettime(s, m)
+ long *s, *m;
+ {
+ struct timeval now;
+
+ if (gettimeofday(&now, (struct timezone *)0))
+ perror("gettimeofday"), exit(1);
+ *s = now.tv_sec;
+ *m = now.tv_usec / 1000;
+ }
+
+ /*
+ * N.B.: we assume 0 <= m < 1000.
+ */
+ timesub(ds, dm, s, m)
+ long *ds, *dm, s, m;
+ {
+ register long s1 = *ds, m1 = *dm;
+
+ s1 -= s;
+ if ((m1 -= m) < 0) {
+ s1--;
+ m1 += 1000;
+ }
+ *ds = s1;
+ *dm = m1;
+ }
+
#endif
--
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 4251)
UUCP: seismo!umcp-cs!chris
CSNet: chris at umcp-cs ARPA: chris at mimsy.umd.edu
More information about the Comp.sources.unix
mailing list