MartinRichardsBenchmarkDoc.tioga
Copyright © 1987 by Xerox Corporation. All rights reserved.
Last Edited by: Neil Gunther January 5, 1987 1:51:47 pm PST
MartinRichardsBenchmark
CEDAR 6.1 — FOR INTERNAL XEROX USE ONLY
MartinRichardsBenchmark
Martin Richards
© Copyright 1986 Xerox Corporation. All rights reserved.
Abstract: 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.
Created by: Martin Richards
Maintained by: Bob Hagmann <Hagmann.pa>
Keywords: Arithmetic, Benchmark, Software systems.
XEROX Xerox Corporation
Palo Alto Research Center
3333 Coyote Hill Road
Palo Alto, California 94304
For Internal Xerox Use Only
Historical Background
Files:
LPBenchMark LONG POINTER version
RefBenchMark Version using REFs
IBenchMark Version using INLINE procs
ILPBenchMark INLINE procs with LONG POINTERs
IRefBenchMark INLINE procs with REFs
The following is from a message sent to ComputerResearch^ by Jim Mitchell on 16 Sep 83.
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 benchmark 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 (8 MHz) 19 4248 Modula-2
21 2540 BCPL
25 3796 CLU
Z8002 (3.9 MHz) 20 2560 BCPL
PDP-11/45 21 2658 BCPL
25 N/A C
28 3072 Modula-2
Intel 8086 (2.5MHz) 27 2376 BCPL
MC6809 (2MHz) 61 2280 BCPL