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.