[racket-dev] my '312' this semester, how we compare to others

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Thu Apr 21 14:01:25 EDT 2011

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.


Posted on the dev mailing list.