在尝试优化C和LISP时,查看编译器输出的汇编代码可能会有很大的帮助。
Clojure可能会编译为同样有用的JVM字节码。
我如何看待它?
答案 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)
一些手工制作的解决方案: