JRubyのspinup時間はどこまで速くできるのかやってみた

rubygems, rack, rails, sinatra等を使わないとどこまで速くなるのかやってみた。
使ったのは最新のJRuby1.5.0のnightlyビルドと以下のサーブレット

package org.bongole;

import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Logger;

import javax.servlet.http.*;
import org.jruby.Ruby;
import org.jruby.RubyInstanceConfig;
import org.jruby.exceptions.RaiseException;
import org.jruby.javasupport.JavaEmbedUtils;
import org.jruby.runtime.builtin.IRubyObject;
import org.jruby.util.ClassCache;

@SuppressWarnings("serial")
public class SimpleJRubyServlet extends HttpServlet {
	
	private ClassCache classCache = JavaEmbedUtils.createClassCache(Thread.currentThread().getContextClassLoader());
	private Logger logger = Logger.getLogger(this.getClass().getName());
	 
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws IOException {
		Ruby runtime = JavaEmbedUtils.initialize(new ArrayList(), createRuntimeConfig());
		runtime.getGlobalVariables().set("$resp", JavaEmbedUtils.javaToRuby(runtime, resp));
		runtime.evalScriptlet("$resp.content_type = 'text/plain'; $resp.writer.println('Hello, World from JRuby')");		
	}
	
    private RubyInstanceConfig createRuntimeConfig() {
        RubyInstanceConfig config = new RubyInstanceConfig();
        config.setClassCache(classCache);
        return config;
    }
}

結果:

ここまでシンプルにしても、現状5,6秒くらいはかかるってことか。。。
id:urekatさんの実験によるとsinatraとrackで8,9秒ってところだからがんばってもあと3秒くらいしか縮まないのか。なるほど。