Как я могу проверить байт-код JVM для функции clojure? - PullRequest
14 голосов
/ 29 сентября 2010

Пытаясь оптимизировать C и LISP, может помочь поиск кода ассемблера, выводимого компилятором.

Clojure предположительно компилируется в байт-код JVM, который был бы в равной степени полезен.

Как мне это увидеть?

Ответы [ 3 ]

12 голосов
/ 29 сентября 2010

Clojure динамически компилирует весь код Clojure в байт-код во время выполнения.Я не уверен, как вы можете увидеть этот динамически скомпилированный байт-код.Однако вы можете самостоятельно Ahead Of Time (AOT) компилировать свой код Clojure, и он будет генерировать файлы .class.Затем вы можете использовать javap для просмотра байт-кода.

Используйте функцию compile в Clojure / core для компиляции вашего пространства имен:

функция компиляции

Использование: (compile lib)

Компилирует пространство имен, названное символом lib, в набор файлов классов.Источник для библиотеки должен находиться в правильном каталоге classpath.Выходные файлы перейдут в каталог, указанный в compile-path , и этот каталог тоже должен быть в пути к классам.

Затем используйте javap:

javap -l -c -s -private MyClass
6 голосов
/ 24 октября 2013

Я сделал для этого небольшую библиотеку и плагин lein, проверьте:

https://groups.google.com/d/msg/clojure/_BBXpt_GPIw/WWq2VbWkEKEJ

https://github.com/gtrak/no.disassemble

Имеет дополнительное преимущество: не требуется AOT.

3 голосов
/ 29 сентября 2010

Некоторые решения ручной работы:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...