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

Re: lisp performance was Re: problems with lisp




There are pattern matchers for scheme, at least.  IIRC there is code for
one in Essentials of Programming Languages; check out Dan Friedman's web
site.  I'm sure there are similar facilities for lisp somewhere.

I don't see any reason why pattern matching shouldn't be just as popular in
lisp/scheme as it is in ML or Haskell.  Erlang is dynamically typed and
Erlang programs use pattern matching all the time.

Mike

> Date: Mon, 25 Aug 2003 13:06:43 -0400
> From: Ken Anderson <kanderson@bbn.com>
> 
> You can find several papers on Lisp performance her:
> http://openmap.bbn.com/~kanderso/performance/
> 
> I'd be intersted in looking at your programs if you'd like.
> 
> Unfortunately, Common Lisp does not require tail call optimization, though things like tail calls are usually optimized.  You'd see stack overflows if this was an issue.
> 
> First, I write Lisp straightforwardly.  This version is often plenty fast enough.  When its not, i profile (see for example, http://openmap.bbn.com/~kanderso/performance/postscript/courage-in-profiles.ps).  I don't know if clisp or gcl have profilers however.  Often a few relatively small changes can make a big difference.  These may or may not require type declarations.
> 
> Going from OCaml to Lisp you may lose information that OCaml takes advantage of.
> 
> I agree that pattern maching makes the code cleaner.
> 
> k
> 
> At 04:40 PM 8/22/2003 +0100, Russ Ross wrote:
> >Performance is still a bit of a sore spot, too.  I hear that tuned
> >lisp code runs as fast as C code, but I'm still sceptical.  I
> >recently implemented a fairly simple solution to the ILC programming
> >contest in both CL and OCaml.  I wrote it first in OCaml as an
> >exercise to learn the language and then ported it to Lisp.  It was
> >a purely functional solution and I was careful to use tail calls
> >when possible.  The two solutions are almost identical in structure,
> >but the lisp version is about 10x slower.  I tried it with two lisp
> >compilers (clisp and gcl) and they were about the same.  I'm sure a
> >more experienced lisp programmer could tune it up nicely, but I have
> >much more lisp experience than OCaml experience and I was shocked
> >by the result.  I don't trust a language where the clean, simple
> >approach is the slow one and requires careful annotations and
> >program restructuring to work around the idiosyncrasies of the
> >language.  With Lisp it seems like there are two languages: the
> >simple one you teach people and use to demonstrate its virtues, and
> >the real one you use for high performance implementations.  Can't
> >Simple Lisp be the same as High Performance Lisp?  So far it sure
> >seems to work for OCaml.  Pattern matching meant the OCaml code was
> >much more transparent as well (and I'm saying this as a complete
> >beginner with OCaml and ML in general).
>