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 ----------------------------------------------------------------