编译和运行一个简单的HelloWorld
需要约1秒的Java。是否有绕过编译的Java解释器?
$ time javac HelloWorld.java
real 0m0.659s
user 0m1.203s <-- 1.2s
sys 0m0.113s
为了便于比较,Lua可以在大约0.002秒内完成相同操作。
在一些(诚然异常)的应用中,动态地生成的数以千计的短期运行的Java应用程序,以使得1秒可以转化为小时编译的。
我不知道是否有Java解释器完全绕过编译到*.class
文件?
(我知道有Groovy的,但它不是Java的一个严格的超)
一秒钟似乎太长。您可以将Java编译器用作JVM中的API,并且可以立即将生成的类加载到正在运行的JVM中。 –
@MarkoTopolnik我看到0.7s的实时和1.2s的用户时间(据推测,由于多线程)。你可以大大低于编译器API的下面吗? – MaxB
你在测试什么? 'javac'在命令行?当在JVM中使用时,我认为你可以有一个稳定的“热”设置,除了你正在编译的一个源文件之外,所有的东西都被加载。编译时间应该在毫秒内。 –