2013-05-14 2 views
6

Раньше я не использовал ritz-nrepl, а nrepl занял около 10 секунд, что долго, но все еще терпимо, так как я не перезапускаю его так часто.Есть ли способ уменьшить время запуска nrepl (ritz-repl)?

Когда я попробовал ritz-repl, понадобилось почти 30 секунд для загрузки и потребляло около 1,3 Гб памяти. Это заставляет меня неохотно использовать его.

Я даже выбрал SSD, надеясь, что он может увеличить скорость, потому что я слышал, как кто-то упоминал, что он «почти не замечает время запуска реплики», используя ubuntu + ssd. Но я не могу сказать разницу между ssd и hdd. Я не знаю, сделал ли я что-то неправильно или это просто миф.

+1

Я только запускаю его, когда мне нужна интенсивная переменная самоанализа. В остальное время я использую обычный nrepl. Мой опыт заключается в том, что ritz-nrepl далеко не зрелый. Я использую Fedora + SSD, и так оно и есть, 30 секунд для меня абсолютно нормальное. Кроме того, поскольку мне приходится дезактивировать автозаполнение (ac-nrepl) во всем мире (поскольку в противном случае emacs зависает), это не очень привлекательно для большинства времени рабочего процесса разработки. –

+0

Спасибо за информацию! BTW, показывает ваше исходное время запуска nrepl? Я получил 6 с без зависимости и около 15 с 7 или около того. – LoveProgramming

+0

Да, я не оценил это, но это все. Для большинства разработок я обычно получаю этот макрос, чтобы получить интроспекцию в реплике: (defmacro dbg [x] '(let [x # ~ x] (println" dbg: "'~ x" = "x #) x #)) –

ответ

1

Могут быть способы сократить время запуска сервера nrepl, включающего в себя риц, но по большей части вы будете застревать, по крайней мере, за 10 секунд, чтобы загрузить jvm на вашем компьютере. Для меня это своего рода неприемлемая задержка при интерактивном развитии.

В качестве альтернативы вы можете использовать более надежный подход к перезагрузке кода, используя the clojure.tools.namespace library. Он в основном сохраняет граф зависимостей в памяти и перезагружает только те пространства имен, которые были изменены с момента последнего обновления.

Это будет работать из коробки для некоторых, но не для всего кода Clojure. См. the 'Preparing Your Application' section of the readme для получения дополнительной информации об этих крайних случаях, чтобы этого избежать.

Надеюсь, это поможет!