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