$time java -jar clojure-1.4.0.jar -e '(println "Hello world")'Hello worldreal 0m4.586s$time python clojure.py -c '(py/print "Hello world")'real 0m14.690s$time mono Clojure.Main.exe -e '(println "hello world")'hello worldreal 0m4.843s/* cloj
$time java -jar clojure-1.4.0.jar -e '(println "Hello world")' Hello world real 0m4.586s $time python clojure.py -c '(py/print "Hello world")' real 0m14.690s $time mono Clojure.Main.exe -e '(println "hello world")' hello world real 0m4.843s /* clojure-metal is not tested due to not being written at the moment */
Clojure启动时间可以很小,就像我运行Perl或Python脚本一样吗?慢启动时间是基础框架或Clojure的问题(可以迟早修复)还是设计?
注意:我已经了解了start-persistent-server-than-connect-to-it的解决方法.
启动时间主要是因为Clojure本身在初始化方面所做的工作.其中一些任务非常重要,例如加载和编译核心Clojure命名空间.在不同的平台实现上运行不会真正改变这一点.但是,未来优化的可能性很大:
> Clojure本身的大部分内容可以提前编译
>可以增强Clojure编译器本身的性能
>延迟加载和/或编译可以减少感知延迟(可能是最大的胜利:大多数代码不需要clojure.core和其他依赖项中的所有命名空间,或者至少不是立即)
>非常聪明的人可能会弄清楚如何进行并行加载和编译
请注意,尽管JVM经常(不公正地)受到指责,但JVM在很大程度上与此无关:现代JVM的启动时间约为0.1秒.
我实际上利用这个用于在Clojure中编写的GUI应用程序:通过使用main方法在纯Java中编写启动代码,您可以拥有一个启动画面,并且GUI的第一个屏幕几乎立即出现,然后加载Clojure以及其余的您的应用程序代码在后台.