偶尔我想在Shell脚本中使用clojure
,但启动时间约为900毫秒实在是太慢了。于是我会 startpage 搜索“nailgun clojure”,但只有vimclojure之类的特殊情况才会显示出来。这时,我装作没有时间,转向启动更快的更awk
ward语言。
那么,如何使用nailgun
来加速clojure
的启动时间呢?
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
就我的情况而言,与没有使用Nailgun相比,实际脚本的启动时间缩短到了80毫秒。
为了使实际脚本的运行更加方便,创建一个可执行文件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随着时间推移消耗所有内存,最终导致系统交换到磁盘。尚未对此进行内存分析,但希望提醒您。