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