[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Time and time again

Date: 21 Oct 1980 1944-PDT
Subject: Lisp immeasurements
To: bboard at SRI-KL

Since everyone is posting messages about LISP comparisons, I thought I would
get into the act...

Date: 20 Oct 1980 1039-PDT
From: CSD.DEA at SU-SCORE (Doug Appelt)
Subject: INTERLISP Timing measurements

	It seems as though it is "common knowledge" that INTERLISP is slow
and inefficient, and people occasionally come up with data to "prove" that
point, and show INTERLISP is 20 time slower than its nearest competition.
What they usually succeed in proving is that they don't understand INTERLISP.
I am referring in particular to the recent measurements in the message
distributed by JONL.

	I suspected that someone didn't know what they were doing here,
so I did some checking of my own.  Nothing fancy, and no particular
attempt to factor out measurement noise was made.  I feel that a fair
comparison between the LISPS should be made in which each LISP uses
the same mode of compilation.  INTERLISP's default mode of compiling
is geared to convenience and flexibility, while MACLISP always produces
fast, but more difficult to handle compiled code.  It's possible to make
INTERLISP produce efficient compiled code as well.

	Here are the timings I got with my quick measurements on the TAK
	Interpreted			23ms
	Compiled (default mode)		16ms
	Compiled with (LOCALVARS . T)	 9ms
	Block compiled			 2ms

	The fastest time compares favorably with UCI LISP, and is in
the same order of magnitude as the MACLISP timings.
Date: 21 Oct 1980 2055-PDT
From: Boyer
Subject: TAK in block compiled Interlisp

I tried out (TAK 4 2 0) in Interlisp on our KL here, and I
got 2.0 for block compiled code instead of the awful 22.8
that Mr. Goto got on his 20-50.  (That's still pretty far
 from the .69 for Maclisp but better than the 2.90 for
UCILISP).  I suspect that Mr. Goto didn't use the block
compiler, but only used the ordinary Interlisp compiler.  I
also used the open compiled IGREATERP instead of GREATERP.
The test was done with the Interlisp TIME function, and I
ran the computation 1000 times, thereby reducing error due
to getting set up.

For those not familiar with Interlisp, I should mention that
block compilation of Interlisp is what one uses to get speed
and it's not much more difficult to generate.  If you break
ordinary compiled code, you can find out what fns have been
called, what the args are, etc.  If you break block compiled
code, you can't find out much.  Also, in block compiled code
you must worry about which vars are special and which fns
can be returned (thrown) to.