$ 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变通方法。
答案 0 :(得分:4)
ClojureScript可以很快启动。这个数字有点误导,因为它在编译时会删除代码。这意味着此代码段会被编译为print("hello world");
。这是我在机器上得到的东西:
$ echo '(js/print "hello world")' > hello.cljs
$ cljsc hello.cljs '{:optimizations :advanced}' > hello.js
$ time rhino hello.js
hello world
real 0m0.466s
为了比较,这是我使用普通clojure得到的:
$ time java -jar clojure-1.4.0.jar -e '(println "hello world")'
hello world
real 0m1.369s
答案 1 :(得分:3)
启动时间主要是因为Clojure本身在初始化方面所做的工作。其中一些任务非常重要,例如加载和编译核心Clojure命名空间。在不同的平台实现上运行并不会真正改变它。
但是,未来优化的潜力很大:
请注意,尽管JVM经常(不公正地)受到指责,但JVM在这里基本上无关紧要:现代JVM的启动时间约为0.1秒。
我实际上将它用于使用Clojure编写的GUI应用程序:通过使用main
方法在纯Java中编写启动代码,您可以拥有一个启动画面,并且GUI的第一个屏幕几乎立即出现,然后在后台加载Clojure和其他应用程序代码。