有没有办法加快Groovy的启动时间? (除了使用某种单独运行的Groovy进程,如已建议的那样)。
我并不关心执行时间,但是启动缓慢使得无法为我开发Groovy。
在我的机器上使用Groovy和Ruby启动和运行空脚本之间的简单比较:
$ time groovy -e ""
real 0m5.678s
user 0m6.468s
sys 0m0.456s
$ time ruby -e ""
real 0m0.023s
user 0m0.020s
sys 0m0.004s
我使用存储库中的标准软件包运行Ubuntu 11.10。
$ groovy -v
Groovy Version: 1.7.10 JVM: 1.6.0_23
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=11.10
DISTRIB_CODENAME=oneiric
DISTRIB_DESCRIPTION="Ubuntu 11.10"
$ java -version
java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.1)
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode)
答案 0 :(得分:6)
这是JVM开销和groovy自己的启动时间的组合。将-noverify
标志添加到JVM选项会关闭字节码验证,这会产生明显的差异。将JAVA_OPTS
环境变量设置为-noverify
以使其能够使用它。
还有一个项目是在后台运行服务器进程来解决这个问题:http://kobo.github.com/groovyserv/
答案 1 :(得分:1)
JVM本身有很多启动开销,最适合长时间运行的进程。
即使您说“除了使用某种单独运行的Groovy进程,因为我已被建议”,您可能需要查看Nailgun。
6秒似乎过度了。以下是我在同一测试中得到的结果:
$ time groovy -e ""
real 0m0.588s
user 0m0.484s
sys 0m0.056s
$ time groovy -e ""
real 0m0.856s
user 0m1.114s
sys 0m0.125s
$ groovy -version
Groovy Version: 1.8.5 JVM: 1.6.0_29 Vendor: Apple Inc. OS: Mac OS X
$ java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-11M3527)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)