首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 第二书店 程序员
您的位置:Java->Groovy 1.6.0 BETA 1 发布了!性能有显著提升!

Groovy 1.6.0 BETA 1 发布了!性能有显著提升!2008-05-06 来自:villa123  [收藏到我的网摘]

Groovy 1.6.0 BETA 1终于发布了,除了一些BUG修正外,最令人兴奋的是,Groovy的运行效率有了显著的提升。官方用Great Language Shootout的基准测试得出Groovy 1.6.0 BETA 1的性能相比Groovy 1.5.6 GA,提升了150%~460%。

眼见为实,耳听为虚,我自己也做了一个相对简单的性能测试:

利用Groovy 1.6.0 BETA 1将下面解决八皇后问题的代码执行10次,结果如下:
1 2 3 4 5 6 7 8 9 10 AVG
Groovy1.5.6GA : 1360 1156 969 1000 1063 1110 938 1046 1031 954 1062.7
Groovy1.6.0BETA1: 187 171 141 109 187 156 172 141 203 187 165.4

经过计算,Groovy1.6.0BETA1的性能相比Groovy1.5.6GA,提升了542.5%。

如果是普通应用程序代码的话,提升的幅度会小一点。


此外,Groovy1.6.0BETA1还支持Multiple assignments(多重赋值)
def listOfN(numOfElem) {
1..numOfElem
}

def a, b
[a, b] = listOfN(1)
assert a == 1
assert b == null

[a, b] = listOfN(10)
assert a == 1
assert b == 2

[a, b] = [b, a]
assert a == 2
assert b == 1

还支持Annotations的定义,(在Groovy 1.6.0之前,Annotations的定义只能放在Java代码中):
@interface Cachable {
String cache()
}
最后一个值得关注的新特性就是引入@Bindable这个Annotation
具体使用方法请参考: Groovy高效编程——@Bindable的使用


八皇后问题代码:
q = 8
i = new int[q]
count = 0

def scan(n){
if (n == q){
println(i.toList())
count++
return
}
i[n]=0
while (i[n] < q){
i[n] = i[n]+1
if (check(n))
scan(n + 1)
}
}
def check(n){
if (n > 0)
for (j in 0.. if (i[j] == i[n] || i[j] - i[n] == j - n || i[j] - i[n] == n - j)
return false
return true
}

long t1 = System.currentTimeMillis()
scan(0)
long t2 = System.currentTimeMillis()
println("total time:" + ( t2 - t1)) // 耗时
println("total results:" + count)

下载地址:http://dist.groovy.codehaus.org/distributions/groovy-binary-1.6-beta-1.zip

推荐人评论

Groovy 1.6.0 BETA 1终于发布了,除了一些BUG修正外,最令人兴奋的是,Groovy的运行效率有了显著的提升。

用户评论

正在载入评论列表...

是谁推荐了此篇文章

专家头像陈丽辉CSDN频道编辑,联系方式chenlh@csdn.net
个人blog发送信息
陈丽辉推荐的其他文章

赞助商精华文章

热点新闻

热点评论

    精彩视频

    精彩专题

    资源下载

      网站简介广告服务网站地图帮助联系方式诚聘英才English问题报告
    北京世纪乐知数码科技有限公司  版权所有  京 ICP 证 020026 号
    Copyright © 2000-2006, CSDN.NET, All Rights Reserved