Если бы я должен был догадаться, я уверен, что ответ будет Clojure, но я не уверен, почему. Логически (мне) кажется, что ClojureScript должен быть быстрее:
Оба являются "динамическими", но ClojureScript
- Компиляция с JavaScript, работающая на V8
- Двигатель V8, возможно, является самым быстрым динамическим движком языка.
- V8 записывается в C
тогда как Clojure:
- Также динамический
- Работает в JVM, у которого нет встроенной динамической поддержки, поэтому я думаю, что JVM должен делать то, что делает V8, чтобы включить динамическую поддержку.
- и Java медленнее, чем C
Итак, как Clojure быть быстрее, чем ClojureScript? "Динамический" означает что-то другое, если говорить, что JavaScript динамический, а Clojure - динамический? Что я не вижу?
(Конечно, если ClojureScript действительно быстрее, то верно ли это рассуждение выше?)
Я думаю, что компиляция Clojure.... является, по крайней мере, частью вопроса. Я знаю, что часть JVM не может просто быть простым интерпретатором (иначе ClojureScript будет быстрее), но Clojure не может скомпилировать обычный байт-код, так как в JVM нет "динамического". Итак, какова разница между тем, как компилируется/выполняется ClojureScript и каким образом Clojure компилируется/исключается и как выполняется компиляция/выполнение простой Java, а также различия производительности в каждом?