Subject: Re: LISP for embedded systems
From: rpw3@rigden.engr.sgi.com (Rob Warnock)
Date: 1999/10/25
Newsgroups: comp.lang.lisp
Message-ID: <7v0g54$7pij0@fido.engr.sgi.com>
Christopher R. Barry <cbarry@2xtreme.net> wrote:
+---------------
| rpw3@rigden.engr.sgi.com (Rob Warnock) writes:
| > though, I still think it [SIOD] has its uses...
| 
| When would it be a better choice than Guile, or a more complete
| implementation?
+---------------

I think that's up to the user, and also very much depends on the
application & environment. One of SIOD's *really* nice features is
how small and fast-starting it is. Here are some (admittedly very
old) results of running a trivial task in several flavors of Scheme
[except the first, which is just /bin/sh]. Each number is the lowest
time repeatably seen in a number of runs.

	Total start-up & run time for a trivial task
	in Scheme: (display "hello, world!")(newline)

	XXX     time    notes
	===     ====    =====
	sh      0.02	Used /bin/sh's builtin "echo"
	siod	0.05	Not R4RS, so no "display"; used "print".
	libscm  0.12
	gsi     0.15    Very first run took 0.68 sec [1.8 MB executable?]
	scm     0.30
	mz      0.50
	rs      0.70
	scsh    1.15

But as soon as you so something more complicated, SIOD's simple
interpreter starts to fall behind other implementations which do
some sort of preprocessing (compiling or "half-compiling") or
shallow binding of lexicals, etc..

So for classic HTTP cgi-bin scripts [for which the SIOD distribution
includes various bits of sample code] where startup time of a new Unix
process is important, SIOD still has a place, IMHO.  For most other
applications, use a "real" Scheme. (My current favorite is MzScheme,
but YMMV.)


-Rob

-----
Rob Warnock, 8L-846		rpw3@sgi.com
Applied Networking		http://reality.sgi.com/rpw3/
Silicon Graphics, Inc.		Phone: 650-933-1673
1600 Amphitheatre Pkwy.		FAX: 650-933-0511
Mountain View, CA  94043	PP-ASEL-IA