[comp.lang.lisp] Lisp Benchmarks

painter@lll-crg.llnl.gov (Jeff Painter) (09/01/89)

I am looking for Gabriel or other benchmarks that would be useful for
comparing Lisp performance of the following machines, preferably with
compilers from the same company (e.g. Allegro Common Lisp or Lucid
CL).  If you have such information, or can point the way to it, please
E-mail a reply to painter@lll-crg.llnl.gov.  I will post a summary, of
course.  Thanks in advance!

MIPS machines, especially DecStation 3100
various Explorers, Lambda, and other Lisp machines
Suns, especially SparcStations
Vaxes
Jeffrey F. Painter			painter@lll-lcc.llnl.gov
L-316, Lawrence Livermore Laboratory	painter@lll-crg.llnl.gov
Livermore CA  94550   USA               415-422-0675, FTS 532-0675
                                        415-423-7613, FTS 543-7613

painter@lll-crg.llnl.gov (Jeff Painter) (10/03/89)

About a month ago, I posted the following.

- I am looking for Gabriel or other benchmarks that would be useful for
- comparing Lisp performance of the following machines, preferably with
- compilers from the same company (e.g. Allegro Common Lisp or Lucid
- CL).  If you have such information, or can point the way to it, please
- E-mail a reply to painter@lll-crg.llnl.gov.  I will post a summary, of
- course.  Thanks in advance!

I apologize to anyone who has been waiting for the summary.  I decided
to postphone it until I had access to an interesting machine to run
some benchmarks myself.  These results are below.

Most of you who read this know at least as well as I to take these
benchmarks with a grain of salt; there isn't enough information here
to make reasonably good comparisons.  Nevertheless I find them
interesting.

________________________________________________________________

From shiffman@Sun.COM Thu Aug 31 18:56:46 1989  (Hank Shiffman)

I can provide the numbers for Sun Common Lisp 3.0 (Lucid).  The
numbers I have are user run time figures and are based on full type
declarations and full optimization.

BTW, these figures are the official Sun results for these benchmarks.

----------------------------

Okay.  Here are the figures for a Sparcstation 1 vs. a 3/60.  Keep
in mind that these are user run time results in seconds, so the
amount of physical memory and disk performance would have little
effect on the results.  Ephemeral GC was turned off and swap space
was large enough to allow each benchmark to run to completion without
a dynamic GC.

I don't have results for a 3/50.  Figure roughly half the CPU performance
of a 3/60.  Actual clock time results would be significantly worse,
given the small amount of memory on a stock 3/50.

		   SS1	 3/60
		   8MB	 20MB

Tak		   .07	  .36
Stak		   .59	 1.82
Ctak		   .59	 1.58
Takl		   .45	 1.64
Takr		   .11	  .50
Boyer*		  2.85	 8.92
Browse*		  3.65	15.56
Destru		   .38	 1.38
Trav-Init*	   .95	 3.24
Trav-Run*	  6.04	26.90
Deriv		   .75	 3.10
Dderiv		   .98	 3.88
Div2-Iter	   .39	  .94
Div2-Recur	  1.69	 1.38
FFT*		   .56	 3.68
Puzzle*		  1.24	 4.06
Triang*		 17.86 113.84
Fprint		   .24	 1.02
Fread		   .33	 1.88
Tprint		   .12	  .88
Frpoly*
   R2-10	   .52	 1.46
   R3-10	   .21	  .94
   R-15		   .75	 2.88
   R3-15	  1.42	 6.70
   R2-15	  4.47	12.14


Advantage over 3/60

All benchmarks	  4.10	 1.00
*Selected set	  4.54	 1.00

-- 
Hank Shiffman                                     (415) 336-4658
Marketing Technical Specialist
Software Engineering Technologies               ...!sun!shiffman
Sun Microsystems, Inc.                          shiffman@Sun.com

________________________________________________________________

From mohammad@hpclmp.hp.com Tue Sep  5 16:39:03 1989
   (Mohammad Pourheidari)
The following benchmarks are for Lucid 3.0 running on an HP 850.  We
got these results from Lucid.

[3-run averages; individual run figures deleted- jfp]

EGC incapable MT off
ctak            Average:   0.55
stak            Average:   0.57
tak             Average:   0.11
takl            Average:   0.44
takr            Average:   0.16
boyer           Average:   2.79
browse          Average:   4.24
dderiv          Average:   1.10
deriv           Average:   0.84
destru          Average:   0.40
iterative       Average:   0.32
recursive       Average:   0.52
fft             Average:   0.88
fprint          Average:   0.34
fread           Average:   0.38
frpoly r 2      Average:   0.00
frpoly r2 2     Average:   0.01
frpoly r3 2     Average:   0.00
frpoly r 5      Average:   0.01
frpoly r2 5     Average:   0.07
frpoly r3 5     Average:   0.02
frpoly r 10     Average:   0.13
frpoly r2 10    Average:   0.61
frpoly r3 10    Average:   0.23
frpoly r 15     Average:   0.88
frpoly r2 15    Average:   7.57
frpoly r3 15    Average:   1.50
puzzle          Average:   1.95
tprint          Average:   0.25
traverse-init   Average:   1.12
traverse-run    Average:  11.15
triang          Average:  32.02

EGC incapable MT on
ctak            Average:   0.56
stak            Average:   0.58
tak             Average:   0.11
takl            Average:   0.45
takr            Average:   0.16
boyer           Average:   2.81
browse          Average:   4.20
dderiv          Average:   1.09
deriv           Average:   0.84
destru          Average:   0.39
iterative       Average:   0.32
recursive       Average:   0.51
fft             Average:   0.89
fprint          Average:   0.31
fread           Average:   0.38
frpoly r 2      Average:   0.00
frpoly r2 2     Average:   0.01
frpoly r3 2     Average:   0.00
frpoly r 5      Average:   0.01
frpoly r2 5     Average:   0.07
frpoly r3 5     Average:   0.02
frpoly r 10     Average:   0.13
frpoly r2 10    Average:   0.61
frpoly r3 10    Average:   0.22
frpoly r 15     Average:   0.86
frpoly r2 15    Average:   7.59
frpoly r3 15    Average:   1.51
puzzle          Average:   1.75
tprint          Average:   0.25
traverse-init   Average:   1.12
traverse-run    Average:  11.17
triang          Average:  31.99

EGC capable EGC off MT off
ctak            Average:   0.55
stak            Average:   0.63
tak             Average:   0.11
takl            Average:   0.44
takr            Average:   0.16
boyer           Average:   2.81
browse          Average:   4.27
dderiv          Average:   1.10
deriv           Average:   0.86
destru          Average:   0.40
iterative       Average:   0.33
recursive       Average:   0.51
fft             Average:   0.88
fprint          Average:   0.34
fread           Average:   0.40
frpoly r 2      Average:   0.00
frpoly r2 2     Average:   0.01
frpoly r3 2     Average:   0.00
frpoly r 5      Average:   0.01
frpoly r2 5     Average:   0.07
frpoly r3 5     Average:   0.02
frpoly r 10     Average:   0.13
frpoly r2 10    Average:   0.61
frpoly r3 10    Average:   0.23
frpoly r 15     Average:   0.88
frpoly r2 15    Average:   7.59
frpoly r3 15    Average:   1.52
puzzle          Average:   1.75
tprint          Average:   0.26
traverse-init   Average:   1.12
traverse-run    Average:  11.16
triang          Average:  32.00

EGC capable EGC off MT on
ctak            Average:   0.55
stak            Average:   0.63
tak             Average:   0.11
takl            Average:   0.44
takr            Average:   0.16
boyer           Average:   2.81
browse          Average:   4.27
dderiv          Average:   1.10
deriv           Average:   0.86
destru          Average:   0.40
iterative       Average:   0.33
recursive       Average:   0.51
fft             Average:   0.88
fprint          Average:   0.34
fread           Average:   0.40
frpoly r 2      Average:   0.00
frpoly r2 2     Average:   0.01
frpoly r3 2     Average:   0.00
frpoly r 5      Average:   0.01
frpoly r2 5     Average:   0.07
frpoly r3 5     Average:   0.02
frpoly r 10     Average:   0.13
frpoly r2 10    Average:   0.61
frpoly r3 10    Average:   0.23
frpoly r 15     Average:   0.88
frpoly r2 15    Average:   7.59
frpoly r3 15    Average:   1.52
puzzle          Average:   1.75
tprint          Average:   0.26
traverse-init   Average:   1.12
traverse-run    Average:  11.16
triang          Average:  32.00

EGC on MT off
ctak            Average:   0.57
stak            Average:   0.70
tak             Average:   0.11
takl            Average:   0.44
takr            Average:   0.16
boyer           Average:   4.35
browse          Average:   4.73
dderiv          Average:   1.23
deriv           Average:   0.96
destru          Average:   0.44
iterative       Average:   0.39
recursive       Average:   0.59
fft             Average:   0.88
fprint          Average:   0.32
fread           Average:   0.38
frpoly r 2      Average:   0.00
frpoly r2 2     Average:   0.01
frpoly r3 2     Average:   0.00
frpoly r 5      Average:   0.01
frpoly r2 5     Average:   0.07
frpoly r3 5     Average:   0.02
frpoly r 10     Average:   0.14
frpoly r2 10    Average:   0.61
frpoly r3 10    Average:   0.22
frpoly r 15     Average:   0.98
frpoly r2 15    Average:   8.23
frpoly r3 15    Average:   1.83
puzzle          Average:   1.75
tprint          Average:   0.26
traverse-init   Average:   2.20
traverse-run    Average:  10.91
triang          Average:  32.02

EGC on MT on
ctak            Average:   0.56
stak            Average:   0.70
tak             Average:   0.11
takl            Average:   0.44
takr            Average:   0.16
boyer           Average:   4.35
browse          Average:   4.74
dderiv          Average:   1.22
deriv           Average:   0.96
destru          Average:   0.44
iterative       Average:   0.39
recursive       Average:   0.58
fft             Average:   0.88
fprint          Average:   0.34
fread           Average:   0.39
frpoly r 2      Average:   0.00
frpoly r2 2     Average:   0.01
frpoly r3 2     Average:   0.00
frpoly r 5      Average:   0.01
frpoly r2 5     Average:   0.07
frpoly r3 5     Average:   0.02
frpoly r 10     Average:   0.13
frpoly r2 10    Average:   0.61
frpoly r3 10    Average:   0.23
frpoly r 15     Average:   0.99
frpoly r2 15    Average:   8.27
frpoly r3 15    Average:   1.83
puzzle          Average:   1.76
tprint          Average:   0.27
traverse-init   Average:   2.18
traverse-run    Average:  10.95
triang          Average:  32.05

DHRYSTONES
(FL C = Foreign Loaded C.  Lisp EGC incapable with Multitasking off.)

						  C	FL C	Lisp
						  -	----	----
Microseconds for one run through Dhrystone:    50.4     55.0   192.0
Dhrystones per Second:                      19841.3  18181.8  5208.3

C to Lisp:	3.81
FL C to Lisp:   3.49



 >
 >Thank you for the data.  I presume that EGC refers to garbage
 >collection, and MT to multitasking.
 >

Egc refers to "Ephemeral Garbage Collection".


One other thing I forgot to tell you on those benchmarks.  They were
run in multiuser mode.  I will be looking forward to seeing your
results. 

________________

        Below are the Lisp 3.0 Gabriel Benchmarks which were run on a series
        835 system which was running HPUX version 7.0.

        Environment:
        S800 835 with 32 Mb memory, 132 Mb swap space
        Ephemeral Garbage Collection and Multitasking on
        Compiler settings:
          compilation-speed = 0
          speed = 3
          safety = 0

        Results are user run times in seconds. The average of three
        consecutive runs is given, along with the individual run times.
	[individual times deleted- jfp]

        Benchmark       Average Time
        ---------       ------------
        ctak                 .51
        stak                 .64
        tak                  .10
        takr                 .15
        boyer               4.10
        browse              4.90
        dderiv              1.26
        deriv               1.01
        destru               .38
        div2 iterative       .39
        div2 recursive       .56
        fft                  .42
        fprint               .30
        fread                .38
        frpoly r 10          .20
        frpoly r2 10         .58
        frpoly r3 10         .22
        frpoly r 15          .90
        frpoly r2 15        7.27
        frpoly r3 15        2.66
        puzzle              1.60
        tprint               .22
        triang             29.35

________________________________________________________________


I obtained a version of the Gabriel benchmarks from
gatekeeper.dec.com, and ran them on an LMI Lambda Lisp machine, with
its Release 3 software (operating system, compiler, etc.).

Following are the total running times.  I was unable to get other
kinds of timing on this machine; indeed, some thins like
distinguishing between user and system time contradict the spirit of a
Lisp machine.  These times are not comparable to most benchmark data
because they include garbage collection, swapping memory to disk, and
other such system and non-CPU time.  For some benchmarks most of the
time is devoted to such things, for others none of it.  However, no
unusual unrelated tasks were being run when I ran these benchmarks.
These times are the averages of three runs, in seconds.  Run-to-run
variation suggests that only the first one or two digits are worth
looking at.

The FRPOLY benchmarks are a bit different from those above.  It would
seem that a FRPOLY-4 time is the sum of the R-15, R2-15, and R3-15
FRPOLY times, and similarly 3 corresponds to R-10,... and 2 to R-5,...
But I must emphasize that the times here aren't comparable to the
times shown for other machines.

BOYER -------- 54.981
BROWSE ------- 51.779
CTAK ---------- 5.220
DDERIV ------- 12.394
DERIV --------- 9.584
DESTRU -------- 6.710
DIV2-ITER ----- 7.752
DIV2-RECUR ---- 9.876
FFT ---------- 33.231
FPRINT ------- 16.566
FREAD -------- 19.893
FRPOLY-1 ------ 0.044
FRPOLY-2 ------ 0.629
FRPOLY-3 ------ 7.500
FRPOLY-4 ----- 57.995
PUZZLE ------- 40.769
STAK ---------- 8.947
TAK ---------- 21.046
TAKL --------- 22.455
TAKR ---------- 2.102
TPRINT ------- 12.589
TRAVERSE-INIT  32.675
TRAVERSE-RUN  173.256
TRIANG ------ 902.500

________________________________________________________________

The following timings are from a DecStation 3100 running a beta test
version of Franz Allegro Common Lisp.  These benchmark programs were
obtained from gatekeeper.dec.com in Sept. 1989.

Documentation for the Lisp states that the first regular release will
be significantly faster.  The compiler settings are; Speed 3 Safety 0
(fastest setting).  Times are in seconds, and are the average over 3
runs.  Run-to-run variation is usually .01 seconds or less for cpu
time, and anywhere from 0 to 50% for total real running time.  The
first time below is the non-gc user cpu time and the second time is
the total elapsed time.  Relevent to the elapsed time figures is that
the DS3100 was running in two-user mode, without any other than the
usual user processes running.  It had 16MB memory.  Its virtual memory
was in an RZ55 disk drive.  (In my opinion, it is not worthwhile to
run nontrivial Lisp programs on a diskless workstation).

The results with Speed 1 Safety 1 (the default compiler setting) were
about 20% slower for the cases I looked at.

BOYER ------ 1.816  4.039
BROWSE ----- 2.376  4.519
CTAK -------- .296   .536
DDERIV ------ .656  1.161
DERIV ------- .520   .942
DESTRU ------ .420   .698
DIV2-ITER --- .123   .236
DIV2-RECUR -- .236   .511
FFT --------- .333   .606
FPRINT ------ .153   .416
FREAD ------- .543   .956
FRPOLY-1 ---- .000   .090
FRPOLY-2 ---- .053   .091
FRPOLY-3 ---- .743  1.243
FRPOLY-4 --- 7.086 13.108
PUZZLE ------ .903  1.648
STAK -------- .643  1.093
TAK --------- .686  1.148
TAKL -------- .376   .629
TAKR -------- .093   .155
TPRINT ------ .216  1.952
TRAVERSE-INIT .513  1.142
TRAVERSE-RUN 4.870  8.196
TRIANG ---- 18.176 30.327

________________________________________________________________

What I was really interested in when posting my original query was to
predict whether a large Macsyma application now running on a Lisp
machine would run any faster on any of the newer high-end workstations.
We don't have that program ported to any such workstation yet.
However, Leo Harten has ported DOE-Macsyma to a DecStation 3100 with
Allegro Common Lisp, and a few of the Macsyma demo programs ran about
3.5 to 5.5 times as fast as they do on an LMI Lambda Lisp machine.
This is consistent with the results of the FRPOLY benchmarks above.

Jeffrey F. Painter			painter@lll-lcc.llnl.gov
L-316, Lawrence Livermore Laboratory	painter@lll-crg.llnl.gov
Livermore CA  94550   USA               415-422-0675, FTS 532-0675
                                        415-423-7613, FTS 543-7613

sandell@batcomputer.tn.cornell.edu (Gregory Sandell) (10/03/89)

Having seen the results for a SPARC station benchmark test, I
am interested in seeing how a Mac IIx performs in Allegro
Common LISP.  I work in an evironment where we use both.
Has anybody checked this out?

Greg Sandell

ledford@snowbird.rtp.dg.com (01/11/90)

I am interested in benchmarks for Common Lisp.  Particularly, name,
where available, and your impressions of each one.

Thanks in advance.

Bruce Ledford				ledford@dg-rtp.dg.com
Industry Standard Applications
Data General Corp.