Nailgun is a tool that speeds up Java command startup by punting commands to an always-running "server" JVM. The improvement for JRuby is substantial, with bare-bones startup times improving tenfold.
There's work to be done, like to get signals to forward from the client to the server and to more easily manage server instances, but it's a good start. We're looking for people to try it out (to be released in RC2 soon) and give us feedback.
Here's a short sample session using JRuby with Nailgun:
~/projects/jruby ➔ cd tool/nailgun/ ; make ; cd -
Building ng client. To build a Windows binary, type 'make ng.exe'
gcc -Wall -pedantic -s -O3 -o ng src/c/ng.c
ld warning: option -s is obsolete and being ignored
/Users/headius/projects/jruby
~/projects/jruby ➔ jruby --ng-server
NGServer started on all interfaces, port 2113.
^Z
[1]+ Stopped jruby --ng-server
~/projects/jruby ➔ bg
[1]+ jruby --ng-server &
~/projects/jruby ➔ jruby --ng -e "puts 1"
1
~/projects/jruby ➔ time jruby -e "puts 1"
1
real 0m0.609s
user 0m0.482s
sys 0m0.119s
~/projects/jruby ➔ time jruby --ng -e "puts 1"
1
real 0m0.073s
user 0m0.010s
sys 0m0.018s
- Charlie