如果我要猜的话,我相当确定答案是Clojure,但我不确定为什么。在逻辑上(对我来说),ClojureScript似乎应该更快:
两者都是“动态”的,但ClojureScript:
当然,如果ClojureScript确实更快,那么上述推理是否正确?
我猜,Clojure编译成什么......至少是问题的一部分。我知道JVM部分不能只是一个普通解释器(否则ClojureScript会更快),但Clojure不能编译成常规字节码,因为JVM中没有“动态”。那么ClojureScript如何编译/执行,Clojure如何编译/执行,以及普通Java如何编译/执行之间的差异以及每个中所暗示的性能差异是什么?
两者都是“动态”的,但ClojureScript:
- 编译成JavaScript,在V8引擎上运行
- V8引擎可以说是最快的动态语言引擎
- V8是用C编写的
- 也是动态的
- 在JVM中运行,JVM没有内置的动态支持,因此我认为JVM也必须像V8一样做一些事情,以实现动态支持
- 而且Java比C慢
当然,如果ClojureScript确实更快,那么上述推理是否正确?
我猜,Clojure编译成什么......至少是问题的一部分。我知道JVM部分不能只是一个普通解释器(否则ClojureScript会更快),但Clojure不能编译成常规字节码,因为JVM中没有“动态”。那么ClojureScript如何编译/执行,Clojure如何编译/执行,以及普通Java如何编译/执行之间的差异以及每个中所暗示的性能差异是什么?