[net.micro] Long promised benchmarks, already.

caf (04/26/83)

Here are some of the benchmarks I ran at the Winter 83 conference as
well as some others with CP/M and/or MS-DOS.

	Sieve benchmark ( Slightly modified from Byte Magazine version)
		4-83 Chuck Forsberg CDI cdi!caf

#define SIZE 8190
#define SIZEPL 8191
char f[SIZEPL];
main()
{
	register int i,p,k,c,n;
	for (n = 1; n <= 10; n++) {
		c = 0;
		for (i = 0; i <= SIZE; i++) f[i] = 1;
		for (i = 0; i <= SIZE; i++) {
			if (f[i]) {
				p = i + i + 3; k = i + p;
				while (k <= SIZE) { f[k] = 0; k += p; }
				c++;
			}
		}
	}
	printf("\n%d primes.\n", c);
}

		Results "32 bit" systems

		Sorted by Execution real time
Compile - Link		Execute
Real	User	Real	User	Bytes	System

1.8	.31	.37	0.2	200	Ahmdal 470-V8 + UTS (160 users) %
25	1.3	0.8	.45	224	Gould SEL 32/87 (loaded) %
27	6.6	1.1	1.0	140	Charles Rivers + Unos %
22	1.8	2.0	1.2	144	Parellel 68k + Zenix #
14.6	-	3.3	-	148	Sun Microsystems 68k
22	1.8	3.7	1.3	144	Parellel 68k + Zenix %#
31	5.5	5.0	4.5	148	Momentum Hawk 32
38	6.8	5.0	3.9	148	CYB Multibox (Sun Board)
41	7.3	6.0	5.2	148	Lisa + Unisoft
15	3.8	9	6	88	VAX 11/730 + 4.1 BSD
45	8.2	9.0	8.2	128	NS16032 6mHz + "4.1 BSD" &&

		Sorted by Compile/link real time
Compile - Link		Execute
Real	User	Real	User	Bytes	System

1.8	.31	.37	0.2	200	Ahmdal 470-V8 + UTS (160 users) %
14.6	-	3.3	-	148	Sun Microsystems 68k
15	3.8	9	6	88	VAX 11/730 + 4.1 BSD
22	1.8	2.0	1.2	144	Parellel 68k + Zenix #
22	1.8	3.7	1.3	144	Parellel 68k + Zenix %#
25	1.3	0.8	.45	224	Gould SEL 32/87 (loaded) %
27	6.6	1.1	1.0	140	Charles Rivers + Unos %
31	5.5	5.0	4.5	148	Momentum Hawk 32
38	6.8	5.0	3.9	148	CYB Multibox (Sun Board)
41	7.3	6.0	5.2	148	Lisa + Unisoft
45	8.2	9.0	8.2	128	NS16032 6mHz + "4.1 BSD" &&

		Results 8-16 bit systems

		Sorted by real execution time
Compile/Link	Execute		Text 
Real	User	Real	User	Bytes	System

18	1.1	2.0	1.5	96	11/70 + V7 (loaded)
26	3.7	2.1	2.0	110	Zilog Model 11
22	4.9	2.5	2.2	98	Plexus P-25 5 mHz
21	6.4	3.2	2.8	98	Plexus P-40 4 mHz
95	-	7.8	-	126	Control-C CC86 IBMPC CP/M-86 floppies ^
75	-	10	-	135	Zenith Z100 floppies + Lattice C 1.01 ^
82	-	11	-	135	IBMPC floppies PCDOS1.1 + Lattice 1.01 ^
65	-	-	-	135	IBMPC floppies PCDOS2.0 + Lattice 1.01 &
28	-	11	8.0	126	Coherent +IBMPC +Corvus? 2 users
32	5.9	13	12	152	IBM 4954 (Series/1 middle)
-	-	22	-	-	CII C86 1.26 IBMPC CP/M-86 floppies ^!
19	-	31	-	-	Z89+ CDI MEG-6 +BDS C + L2 + EX ^

		Sorted by real compile/link time
Compile/Link	Execute		Text 
Real	User	Real	User	Bytes	System

18	1.1	2.0	1.5	96	11/70 + V7 (loaded)
19	-	31	-	-	Z89+ CDI MEG-6 +BDS C + L2 + EX ^
21	6.4	3.2	2.8	98	Plexus P-40 4 mHz
22	4.9	2.5	2.2	98	Plexus P-25 5 mHz
26	3.7	2.1	2.0	110	Zilog Model 11
28	-	11	8.0	126	Coherent +IBMPC +Corvus? 2 users
32	5.9	13	12	152	IBM 4954 (Series/1 middle)
65	-	-	-	135	IBMPC floppies PCDOS2.0 + Lattice 1.01 &
75	-	10	-	135	Zenith Z100 floppies + Lattice C 1.01 ^
82	-	11	-	135	IBMPC floppies PCDOS1.1 + Lattice 1.01 ^
95	-	7.8	-	126	Control-C CC86 IBMPC CP/M-86 floppies ^

Notes:
	% Outer loop increased to 100 and result times adjusted because of
fast execution times indicated.

	# Siginificant difference between real and user times not due
to system load (user time suspect).

	&& System still being developed. Compiles size dropped from 136
to 128 bytes and times by >40% during the Unicom show.  Stay tuned ...

	^ Real time measured from beginning of program execution to program
finish (omitting loading and reboot time).

	& Compile/link times; sequenced by "batch" file; 20 buffers, NO verify.
Verify adds about 15 seconds.

	! A much faster code generator has been promised.

		-------------- Comment ------------

These times are approximate and may improve as product development
proceeds on the newer systems.  They should be used as general
information regarding the levels of performance possible and not in any
specific purchasing decision. It should be noted that the short loops
in this program may penalize highly pipelined machines such as the
16032 more than other programs.

The Regulus software is listed with different times in 16 and 32 bit
categories because the compiler defaults to 16 bit integers and 16 bit
offsets/subscripts.

On some systems, there is a considerable discrepancy between the real
and user times that cannot be explained by other demands on the
system.  Usually, the real and user times are nearly the same when a
cpu bound program is run on an otherwise unloaded Unix system.

The compile/link times are often more significant in predicting how
responsive a system will be in a software development context.

On BDS C, the variables are made externs to optimize 8080 execution
speed and code density.  BDS C lacks longs, floats, and some other
aspects of C, but it produces reasonable code density and is an
excellent compromise for the CP/M environment.

Compile times were influenced by the structure of the compiler.  The
Unix compilers had up to 5 passes (preprocessor, c0, c1, c2, as) while
Lattice and BDS C have but two passes to produce object code (BDS uses
no intermediate file).  Coherent/CC86 has no assembly pass either.

Unix, Zenix, VAX, et al. are trade-marks.