Very interesting tip! Also, like vimclojure, you can run nailgun (
http://martiansoftware.com/nailgun/background.html) locally or on your
server via ssh.

On Mon, Nov 23, 2009 at 5:07 AM, Alex Osborne <a...@meshy.org> wrote:

> We were discussing Clojure startup time (in the context of Leiningen)
> and Phil Hagelberg asked some JRuby people about startup time.  They
> suggested using -Xbootclasspath.
>
> Check this out:
>
> % time (echo | java -client -cp clojure.jar clojure.main)
> 0.84s user 0.04s system 96% cpu 0.908 total
>
> % time (echo | java -client -Xbootclasspath/a:clojure.jar clojure.main)
> 0.42s user 0.04s system 106% cpu 0.431 total
>
> For the server VM:
>
> % time (echo | java -server -cp clojure.jar clojure.main)
> 1.07s user 0.06s system 113% cpu 0.995 total
>
> % time (echo | java -server -Xbootclasspath/a:clojure.jar clojure.main)
> 0.56s user 0.06s system 109% cpu 0.562 total
>
> For reference:
>
> % java -version
> java version "1.6.0_16"
> Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
> Java HotSpot(TM) Server VM (build 14.2-b01, mixed mode)
>
> Apparently on Dan Larkin's PC startup time went from a terrible 5.5s to
> a more bearable 1.9s.
>
> Looks like it's problematic to put Clojure libs in the bootclasspath
> though.  I get an NPE:
>
> Caused by: java.lang.NullPointerException
>         at clojure.lang.RT.load(RT.java:377)
>         at clojure.lang.RT.load(RT.java:371)
>
> Which is this line from RT.java:
>         URL classURL = baseLoader().getResource(classfile);
>
> (clojure.lang.RT/baseLoader) isn't null, so I'm not sure what the deal
> is with that unless the class loading runs in a different thread where
> it is null or something.  But if you just put the Clojure jar itself in
> -Xbootclasspath and the rest of your libs as normal -cp you still get a
> nice fast start. :-)
>
> Charles Nutter has a nice list of JVM flags here:
>
> http://blog.headius.com/2009/01/my-favorite-hotspot-jvm-flags.html
>
> I don't get much of a benefit out of -XShare on my system but it might
> be worth trying as well.
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com<clojure%2bunsubscr...@googlegroups.com>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to