2013-11-13 3 views
1

Мне нужен способ быстрее запустить код Clojure. Я использую SciTE для почти всех языков, включая Clojure, что означает, что вы должны запустить Clojure почти так же, как вы его запускаете из командной строки. Я создал некоторый пакетный файл, который запускает Clojure файл на ударять <F5>:Как запустить код Clojure быстрее из командной строки?

@java -cp C:\clojure-1.5.1\clojure-1.5.1.jar clojure.main %* 

Моя главная претензия в том, что работает Clojure файл занимает почти 2 секунды, чтобы бежать, что неприемлемо. Я хочу, чтобы код выполнялся (скомпилирован быстрее?) Так же быстро, как в Clooj, и в то же время имеет файл python или Lisp на другой вкладке для экспериментов и других вещей, которые может предоставить SciTE.
Я хочу знать, как Clooj может запускать/оценивать весь файл менее чем за секунду, чтобы я мог воспроизводить то же самое в SciTE и не должен переключаться между ними, если, например, тестирование, если какой-либо код может работать без изменений в Common Lisp. Было бы замечательно, если бы был способ оценить код из командной строки, например, clisp -q -x "(print 'under-a-second)".

Моя основная цель - не отойти от SciTE (Clojure - Lisp сравнения кода) и все еще иметь возможность запускать код быстрее (я говорю о запуске, а не об оптимизации).

UPDATE:

Компилятор Clojure может оценить код из командной строки (нашел его в main.clj в файле JAR), таким образом:

java -cp clojure-1.5.1.jar clojure.main -e "(print 'hello)" 

Плохая новость заключается в том, что он компилирует выражения, которые занимают в среднем 2 секунды, как и предыдущие.

ответ

2

Я не попробовать себя, но вы должны проверить https://github.com/flatland/drip

из Readme:

Капельное использует другую стратегию. Он сохраняет новую JVM в резерве с правильной траекторией пути и другими параметрами JVM, чтобы вы могли быстро подключиться и использовать ее по мере необходимости, а затем выбросить. Капельница хэширует параметры JVM и сохраняет информацию о том, как подключиться к JVM в каталоге с хеш-значением в качестве его имени.

+0

Drip - это только Linux, к сожалению. На этом этапе я стараюсь избегать инструментов автоматизации сборки. Знаний Clojure очень мало. Я все еще прокладываю себе путь через книгу Халлоуэй, поэтому вопрос об этом не может быть у Nailgun, пирога и любых пусковых установок JVM. – gebby

3

Существует grenchman, в котором используется постоянный процесс clojure, а затем небольшая программа OCaml для отправки команд и возврата результатов.

+0

Кажется, что нет никаких двоичных файлов для окон. Из взглядов [it] (http://clojure-log.n01se.net/date/2013-10-09.html) может быть невозможно построить «Grenchman» в окнах. Я решил дать nailgun выстрел и запустил сервер, чтобы узнать, что для него нужен класс Java-файлов. Это означает, что мне нужно создать make-файл проекта, «lein compile», а затем «ng ng-cp test.class» в конце. Это шаг вперед и 100 назад ... – gebby

+0

О, я не заметил, что он не был доступен для окон. OCaml, как правило, неплохо разбирается в кросс-платформенном материале и легко компилируется, если grenchman не использует POSIX, который Windows не поддерживает. Windows является видом гражданина второго сорта для большинства программных сред, потому что это единственная широко распространенная платформа, отличная от NIX. – noisesmith

+0

Cygwin предоставляет поддержку POSIX в Windows, а также множество других вещей. Может быть много проблем, только для порта одного приложения. – Mars

0

Если вы довольны ClojureScript, то lumo - отличная альтернатива.