Speed up clojure startup time with nailgun

前端 未结 1 354
孤城傲影
孤城傲影 2020-12-30 07:30

Every now and then I think it would be nice to use clojure for shell scripts, but a startup time of about 900ms is way too slow. I\'d then goog

相关标签:
1条回答
  • 2020-12-30 08:16

    Debian

    Do the following once:

    apt-get install nailgun                          # install nailgun
    java -server -jar /usr/share/java/nailgun.jar&   # run nailgun server
    ng-nailgun ng-cp /usr/share/java/clojure-1.4.jar # add clj to classpath
    

    Now that the server is running and configured, you can run your clojure scripts on it:

    ng-nailgun clojure.main path/to/myscript.clj
    

    In my case, startup time of the actual script went down to 80ms, compared to 900ms without nailgun.

    To make running the actual script more convenient, create an executable file ng-clojure containing the following line, and put it somewhere in your path:

    ng-nailgun clojure.main "$@"
    

    In your clojure shell script, add this as the first line:

    #!/usr/bin/env ng-clojure
    

    Then make the clojure shell script executable and run it like

    path/to/myscript.clj
    

    OSX

    brew install nailgun
    ng-server 
    ng ng-cp ~/.m2/repository/org/clojure/clojure/1.5.1/clojure-1.5.1.jar 
    

    Then execute your script as above.

    Update: Having used it for a while, it doesn't seem to work flawlessly. Sometimes I'm getting random errors that don't occur when running without nailgun, and sometimes there seems to be a memory leak that makes the nailgun JVM consume all memory over time, eventually making the system swap to disk. Haven't memory profiled this yet, but wanted to add this heads-up.

    0 讨论(0)
提交回复
热议问题