`
seanwon
  • 浏览: 63579 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Groovy 1.6.0 BETA 1 发布了!性能有显著提升!

阅读更多
转载自:蛟龍居 山不在高,有仙則名;水不在深,有龍則靈
<a href="http://www.blogjava.net/BlueSUN/archive/2008/05/03/197863.html">链接</a>
文章中提到的性能提高,本人做过实验,的确提高很多。

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..<n)
            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)
分享到:
评论

相关推荐

    groovy

    groovy的帮助文档 !!!!!

    Groovy1.8 beta 官方文档-1269页

    Groovy1.8 beta版的官方文档打包,一个PDF文件,总计1269页,下载至Groovy官网,没有比这更全更权威的资料了。

    groovy-2.4.0-beta-1.zip

    gaedo.zip,这个项目是一个模块,在TapestryGaedo中使用Gaedo,过去代表“谷歌应用引擎数据对象”,但现在是一个无畏的通用持久层!

    elasticsearch-groovy-1.6.0.jar

    Elasticsearch 的官方 Groovy 客户端 org.elasticsearch/elasticsearch-groovy/1.6.0/elasticsearch-groovy-1.6.0.jar

    Groovy 2 Cookbook (英文版)

    Groovy 2 Cookbook (英文版) Groovy开发必读书之一!!

    groovy-2.5.0-beta-2-installer.exe

    groovy-2.5.0 windows 安装包 Groovy 2.5 is the upcoming version of Groovy. For Windows installer 截至2017.11.09 groovy最新最稳定版本 md5: c8b6230728044db6399c837fcf6a23f2 大小:44.9 MB

    groovy eclipse plugin1

    groovy eclipse plugin1groovy eclipse plugin1groovy eclipse plugin1groovy eclipse plugin1groovy eclipse plugin1groovy eclipse plugin1groovy eclipse plugin1groovy eclipse plugin1groovy eclipse plugin1

    groovy和Java相互调用1

    Groovy 调用 Java 类groovy 调用 Java class 十分方便,只需要在类前导入该 Java 类,在 Groovy 代码中就可以无缝使用该

    apache-groovy-binary-2.5.0-beta-2.zip

    Groovy 2.5 is the upcoming version of Groovy. 截至2017.11.09 groovy最新最稳定版本 md5: 2d61601bd11dc6660f25533f96932b49 大小:37.4 MB

    apache-groovy-sdk-2.5.0-beta-2.zip

    Groovy 2.5 is the upcoming version of Groovy. For the sdk 截至2017.11.09 groovy最新最稳定版本 大小:60.0 MB

    groovy-3.0.9-API文档-中文版.zip

    赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar; 赠送Maven依赖信息文件:groovy-3.0.9.pom; 包含翻译后的API文档:groovy-3.0.9-javadoc-API...

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...

    Groovy.in.Action.2nd.Edition.1935182

    Groovy in Action, Second Edition is the undisputed definitive reference on the Groovy language. Written by core members of the Groovy language team, this book presents Groovy like no other can—from ...

    [Groovy] Making Java Groovy 英文版

    Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...

    groovy入门经典,groovyeclipse 插件

    groovy入门经典,groovyeclipse 插件

    精通 Groovy--下一代开发语言

    什么是 Groovy? Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,...

    groovy-xml-2.2.0-beta-1.zip

    bb4-common.zip,通用BB4 Java代码。库项目。所有bb4项目的公共scala代码。

    Introduction to Groovy

    Introduction to Groovy Groovy 的入门教程,了解Groovy的基本原理和结构!

    spock-core-1.3-groovy-2.5.jar

    Spock是针对Java和Groovy应用程序的测试和规范框架。 使它在人群中脱颖而出的是其美丽而富有表现力的规范语言。 由于其JUnit运行程序,Spock与大多数IDE,构建工具和持续集成服务器兼容。 Spock的灵感来自JUnit,...

Global site tag (gtag.js) - Google Analytics