[racket-dev] my '312' this semester, how we compare to others
Matthias Felleisen wrote at 04/21/2011 01:07 PM:
> -A- I demanded that students deliver their functionality via Unix shell scripts, and so I did so too. My tcsh scripts check the argument number and pass the arguments on to Racket. Firing up one of my clients or servers takes several seconds. All other language implementations appear to bring up their servers or clients instantaneously.
>
I only see slow performance like that from non-GUI Racket when the
Racket code is not yet compiled, and perhaps when the files that need to
be read (or ELF loaded) by the OS are not in OS caches.
The "racket" REPL executable startup *did* seem to get a lot slower a
while ago -- a few seconds -- compared to the old "mzscheme" REPL. But
5.1 was less than 1 second to REPL prompt when I tried it just now.
Three shell script tips that shouldn't matter much, but might speed you
up a little: (1) Consider using "/bin/sh" or "/bin/bash" instead of
"tcsh", since the old rule is Bourne for scripting, C-shell for
interactive; (2) In the "#!" line, use command line options to disable
shell features that load various system and user rc files, since these
are slow to read and interpret, and can be huge like completion tables,
plus in a production app other people's shell rc files can introduce
instability; (3) After your script does the minimal stuff it has to do
in shell rather than Racket, use an "exec" to fire off "racket", so that
everyone can forget sooner that shell ever happened.
--
http://www.neilvandyke.org/