mp@mit-eddie.UUCP (Mark Plotnick) (09/21/83)
The following message has been winding its way around the Arpanet...
(if you know anyone at Xerox, ask them for the program sources; Ivy
isn't on the Arpanet).
Date: 19 Sep 83 08:58:48 PDT (Monday)
From: Caro.PA@PARC-MAXC.ARPA
Subject: C,MESA,CEDAR,&c,Benchmarks (long msg)
--------------------------------------------------------
Date: 16 ep 83 13:53:48 PDT
From: mitchell.pa
Subject: Martin Richard's benchmark program (long message)
Martin Richards of the Computer Laboratory, University of Cambridge,
England has written a benchmark program for examining the performance of
language/compiler/machine combinations in executing systems software.
The program emulates the action of a small ("Tripos" like) operating
system in scheduling and executing six tasks: two devices, two device
handlers, a working task, and an idle task. The input device is driven
by a pseudo-random stream of numbers, and the program terminates after a
given amount of data has been processed. The total time taken to
execute the program, and the resulting code size are measured.
The program was originally written in BCPL, and was intended as a
measure not only of a machine's performance, but also of the quality of
its BCPL implementation. Unfortunately, the only specification of the
bencmark is the BCPL source code, thus restricting the implementation
approach which might be taken with other languages. The benchmark has
now been transcribed into a number of different languages, giving useful
comparisons between their efficiency for systems programming.
We (Jon Gibbons/SDD, Dan Craft/CSL, and I) have translated this same
benchmark to Mesa and Cedar and have run the programs on Dandelions and
Dorados. Further, we have measured four versions of the basic program.
One version mirrors the original BCPL closely and uses short (16-bit)
pointers, the second uses 32-bit pointers (to give a better comparison
with VAXen, 370s, 68000s, etc.), the third uses 16-bit pointers and
INLINE procedures (where possible), and the fourth uses 32-bit pointers
and INLINE procedures.
It would be interesting to add SmallTalk and InterLisp-D to these
statistics. I would like to encourage those groups to translate the
program and measure the results (you can find the Cedar versions in
[Ivy]<Mitchell>Cedar>Benchmark>Benchmark.df).
Here are the statistics for the four versions of the benchmark in Mesa
and Cedar on Dandelions and Dorados:
Machine Time Code Size Language (Compiler): Comments
(seconds) (bytes)
Dorado 1.5 1558 Cedar (4.4): INLINE procs
2.0 2014 Cedar (4.4): Long pointers, INLINE procs
2.0 1086 Cedar (4.4)
2.6 1348 Cedar (4.4): Long pointers
Dandelion 8 1326 Mesa: INLINE procs
8.4 1558 Cedar (4.4): INLINE procs
10 1052 Mesa
10 1522 Mesa: Long pointers, INLINE procs
10.6 1086 Cedar (4.4)
11.3 2014 Cedar (4.4): Long pointers, INLINE procs
12 1149 Mesa: Long pointers
12.7 1348 Cedar (4.4): Long pointers
And, here are the full statistics for the benchmark over a fairly wide
range of languages, compilers, and machines. The Mesa/Dandelion
combination (i.e., the Xerox Development Environment) does very well: it
is between a VAX 11/780 and a VAX 11/750 in performance and almost a
factor of two better than an 8 MHz MC68000. It is the absolute winner
in code size.
The table is grouped by machine and the machines are in increasing order
by the fastest benchmark time on a machine.
Machine Time Code Size Language (Compiler): Comments
(seconds) (bytes)
IBM 3081 1.2 3272 BCPL
Dorado 1.5 1558 Cedar (4.4): INLINE procs
2.0 2014 Cedar (4.4): Long pointers, INLINE procs
2.0 1086 Cedar (4.4)
2.6 1348 Cedar (4.4): Long pointers
Inmos S14 2.3 1168 BCPL (?)
IBM 370/165 2.7 3272 BCPL
4 5100 Algol 68C
5 5444 Pascal
VAX 11/780 7 2324 CERN BCPL
11 2631 Modula-2 (Hamburg)
20.6 5140 Modula-2 (Cambridge)
52 3648 Pascal (DEC)
in compatibility mode 10 2658 BCPL
Dandelion 8 1326 Mesa: INLINE procs
8.4 1558 Cedar (4.4): INLINE procs
10 1052 Mesa
10 1522 Mesa: Long pointers, INLINE procs
10.6 1086 Cedar (4.4)
11.3 2014 Cedar (4.4): Long pointers, INLINE procs
12 1149 Mesa: Long pointers
12.7 1348 Cedar (4.4): Long pointers
GEC 4090 10 N/A Modula-2
VAX 11/750 12 2324 BCPL (CERN)
14 2276 C
19 3732 CLU
22 3848 BCPL (U. of Kent)
34 4480 Pascal (Berkeley)
35 5140 Modula-2 (Cambridge)
in compatibility mode 24 3072 Modula-2
Lilith 13 1800 Modula-2
MC68000 (8MHz) 19 4248 Modula-2
21 2540 BCPL
25 3796 CLU
Z8002 (3.9MHz) 20 2560 BCPL
PDP-11/45 21 2658 BCPL
25 N/A C
28 3072 Modula-2
Intel 8086 (2.5 MHz) 27 2376 BCPL
MC6809 (2 MHz) 61 2280 BCPL
--Jim Mitchell
----------------------------------------------------------------