Ускорьте время запуска clojure с помощью гвоздя

Время от времени я думаю, что было бы неплохо использовать clojure для сценариев оболочки, но время запуска около 900 мс слишком медленное. Затем я бы запустил стартовую страницу Google для "nailgun clojure", но единственные результаты, которые появляются, это для особых случаев, таких как vimclojure. Вот тогда я, делая вид, что не успеваю, перехожу к большему awk языки прихода, которые запускаются быстрее.

Итак, как можно nailgun быть использованы для ускорения времени запуска clojure?

1 ответ

Решение

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 добавьте это в качестве первой строки:

#!/usr/bin/env ng-clojure

Затем сделайте исполняемый скрипт оболочки clojure и выполните его следующим образом:

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, и иногда возникает утечка памяти, из-за которой JVM nailgun со временем расходует всю память, в результате чего система переходит на диск. Память еще не описана, но хотелось бы добавить это один на один.

Другие вопросы по тегам