如何检查clojure函数的JVM字节码?

Joh*_*den 14 jvm clojure

在尝试优化C和LISP时,查看编译器输出的汇编代码可能会有很大帮助.

Clojure可能会编译为一个同样有用的JVM字节码.

我怎么看?

Abh*_*kar 12

Clojure在运行时动态编译所有Clojure代码到字节码.我不知道你怎么能看到这个动态编译的字节码.但是,您可以自己进行Alo Of Time(AOT)Clojure代码编译,这将生成.class文件.然后你可以javap用来查看字节码.

使用compileClojure/core中的函数来编译命名空间:

编译功能

用法:(编译lib)

将符号lib命名的命名空间编译为一组类文件.lib的源必须位于适当的类路径相关目录中.输出文件将进入compile-path指定的目录,该目录也必须位于类路径中.

然后使用javap:

javap -l -c -s -private MyClass
Run Code Online (Sandbox Code Playgroud)


gtr*_*rak 6

我为此制作了一个小型库和lein-plugin,请查看:

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

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

它具有不需要AOT的附加优点.