Инструмент профилирования для Clojure?
Кто-нибудь знает хороший инструмент для профилирования или библиотеку для Clojure?
Я бы предпочел что-то, что можно было бы использовать из REPL, по линии (with-profiling ...)
в Allegro Common Lisp в тот же день.
Есть ли что-нибудь в этих строках?
Или у вас есть опыт работы с (некоммерческими) профайлами Java, которые хорошо работают с Clojure?
Ответы
Ответ 1
Я нашел VisualVM (см. здесь и здесь) быть очень удобным. Его использование с Clojure описано примерно год назад в этом сообщении в блоге; насколько я могу судить, это никак не устарело.
Обратите внимание, что GUI, с которого запускается профилировщик VisualVM, имеет заметную область текста, где можно вводить классы/пакеты, которые должны исключаться из профилирования. Я считаю, что результаты более полезны, когда clojure.*
находится в этом списке.
Ответ 2
Там есть новая библиотека Clojure, которая предлагает профилирование: https://github.com/ptaoussanis/timbre
Ответ 3
Только что нашел profile
в Clojure contrib.
Он не работает для большого количества кода (он взорвался с OutOfMemoryError в решении Project Euler, которое VisualVM обрабатывал просто отлично), и он требует, чтобы вы вставляли профилирующие вызовы в функции, которые хотите профилировать.
Тем не менее, это лучшая альтернатива VisualVM в тех случаях, когда вы просто хотите профилировать пару функций.
Ответ 4
Быстрый хэдз-ап, который я устарел для профилирования Timbre для новой специализированной библиотеки Clojure + ClojureScript для профилирования https://github.com/ptaoussanis/tufte.
Это в основном усовершенствование материала из Timbre, плюс специальные документы.
README включает сравнение с инструментами JVM, такими как VisualVM, YourKit и т.д.