使用nailgun加快clojure启动时间

时间:2013-10-01 03:57:07

标签: shell clojure startup nailgun

我觉得将clojure用于 shell脚本会很好,但是大约900ms的启动时间太慢了。然后我会 google startpage获取“nailgun clojure”,但显示的唯一结果是针对特殊情况,例如vimclojure。那时我假装没有时间,转向更快启动的awk种语言。

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

1 个答案:

答案 0 :(得分:21)

<强>的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

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

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

在我的情况下,实际脚本的启动时间降至80毫秒,相比之下没有钉枪的启动时间为900毫秒。

使实际脚本更方便,请创建包含以下行的可执行文件ng-clojure,并将其放在路径中的某个位置:

ng-nailgun clojure.main "$@"

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

#!/usr/bin/env ng-clojure

然后使clojure shell脚本可执行并像

一样运行它
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 

然后执行上面的脚本。

更新:使用它一段时间后,似乎无法正常运行。有时我得到随机错误在没有使用nailgun的情况下运行时没有出现,有时似乎存在内存泄漏,这使得nailgun JVM随着时间消耗所有内存,最终使系统交换到磁盘。还没有内存描述这个,但想要添加这个单挑。