使用nailgun加快clojure启动时间

Eug*_*sky 9 shell clojure startup nailgun

时不时地,我认为这将是很好用clojureshell脚本,但大约900毫秒的启动时间太慢.然后我会google startpage for"nailgun clojure",但唯一显示的结果是针对vimclojure这样的特殊情况.那时我假装没有时间,转向awk更快启动的更多病房语言.

那么,怎样才能nailgun加快clojure的启动时间呢?

Eug*_*sky 22

Debian的

执行以下操作:

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
Run Code Online (Sandbox Code Playgroud)

现在服务器正在运行和配置,您可以在其上运行clojure脚本:

ng-nailgun clojure.main path/to/myscript.clj
Run Code Online (Sandbox Code Playgroud)

在我的例子中,实际脚本的启动时间降至80毫秒,相比之下,没有钉枪的启动时间为900毫秒.

为了使运行实际的脚本更方便,创建一个可执行文件ng-clojure包含以下行,并把它放在您的路径:

ng-nailgun clojure.main "$@"
Run Code Online (Sandbox Code Playgroud)

在你的clojure shell脚本中,将其添加为第一行:

#!/usr/bin/env ng-clojure
Run Code Online (Sandbox Code Playgroud)

然后使clojure shell脚本可执行并运行它

path/to/myscript.clj
Run Code Online (Sandbox Code Playgroud)

OSX

brew install nailgun
ng-server 
ng ng-cp ~/.m2/repository/org/clojure/clojure/1.5.1/clojure-1.5.1.jar 
Run Code Online (Sandbox Code Playgroud)

然后执行上面的脚本.

更新:使用它一段时间后,似乎没有完美的工作.有时我会得到在没有使用nailgun的情况下运行时不会发生的随机错误,有时似乎存在内存泄漏会导致指甲枪JVM随时间消耗所有内存,最终使系统交换到磁盘.还没有内存描述这个,但想要添加这个单挑.