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

时间:2010-09-29 08:14:15

标签: clojure jvm

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

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

我如何看待它?

3 个答案:

答案 0 :(得分:12)

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

使用Clojure / core中的compile函数编译命名空间:

  

编译   功能

     

用法:(编译lib)

     

将符号lib命名的命名空间编译成一组   类文件。 lib的源必须是正确的   classpath相对目录。输出文件将进入   由编译路径指定的目录,该目录也必须   在课堂上。

然后使用javap

javap -l -c -s -private MyClass

答案 1 :(得分:6)

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

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

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

它具有不需要AOT的附加优势。

答案 2 :(得分:3)

一些手工制作的解决方案: