阅读更多

11顶
0踩

编程语言

原创新闻 Groovy 1.6-beta-1发布,性能有大幅提高!

2008-05-03 21:27 by 正式记者 agile_boy 评论(11) 有4109人浏览
感谢G2One和Groovy开发团队为我们发布了Groovy 1.6的第一个beta版本

除了73 个bug fixes和24个improvements之外,剩下的全部是关于性能的提升了

运行和编译性能的提高

正如你在Groovy 1.5.5所体验到的,其编译速度较以前版本有了3 到5 倍的提高,编译速度的提升对于开发版本(1.6)和稳定版本(1.5.x分支)都是有效的,这要得益于类查找缓存(class lookup caches)技术,因此你的工程越大,这种编译速度就表现的越明显。

对于此次发布,最值得关注的变化还是Groovy运行时性能速度的提升,我们使用了Great Language Shootout的几个benchmarks来进行测试,相比于Groovy1.5.6的稳定版来说,性能有150%到460%的提高。尽管Micro-benchmarks测试不会反映出你工程中用到的各种代码,但是总的来说你工程的性能将有显著的提升。

除了交付稳定和高质量的发布之外,在过去的10个月中,我们的重心一直都在性能上面。在Groovy1.0和1.5.1之间,同样的测试内容,我们可以获得 80%的性能提升,即使是1.5.1和1.5.6这样的小版本之间,我们在性能方面又有40%的提升。但直到最近在当前的开发分支当中,我们才集成了现场缓存(site caching)和字节码瘦身(bytecode diets)技术,才会有上面提到的150-460%性能的提升。

重要新特性

除了性能提升、bug修复和小幅提升之外,让我们关注一下正在开发的两个新的关键特性。

多元赋值(Multiple assignments)

首先要谈的是multiple assignments。

一码(代码)胜万语
def listOfN(numOfElem) \{ 1..numOfElem \}

def a, b

// variables will contain each successive element of the list
// and variables beyond the count of elements will be null
[a, b] = listOfN(1) // a list of one element
assert a == 1
assert b == null

// if there are more elements, they won't be assigned to any variable
[a, b] = listOfN(10) // a list of ten elements
assert a == 1
assert b == 2

// and you can swap variables with this notation
[a, b] = [b, a]
assert a == 2
assert b == 1


抽象语法树转换(Abstract Syntax Tree-AST Transformations)

另一关键特性就是抽象语法树转换了,此高级特性对于了解Groovy内部机理的人来说尤为有用,不过Swing的开发者可能也会对此转换特性有极大兴趣。

在Groovy的编译器编译Groovy脚本和类的同时,源代码将先在内存中形成一个具体语法树(Concrete Syntax Tree),然后再转换成为抽象语法树。此AST转换的目的是让开发者可以参与到编译过程中,并且在转变为JVM可以运行的字节码之前可以修改这个AST。通过使用annotations来修饰某些类、字段或者方法,AST转换就可以应用于这些被修饰的元素。

AST转换的一个具体的示例是使用一个新的annotation:@Bindable,这在你开发Swing的时候,尤其有用,看如下示例:
class MyBean {
    @Bindable String pro
}


当你使用@Bindable来修饰一个字段的时候,属性改变监听接口方法将被透明的加入到类的字节码中,因此现在你不需要手工编写这些方法,就可以监视此字段值的变化了,再也没有必要创建addPropertyListener()和removePropertyListener()方法来手工触发属性变化事件了。

Danno Ferrin在他的blog中给了我们一个使用此annotation的一个概览

其他有用的转换和annotations在不久的将来也会出现。

Annotation的定义

最后但并非最不重要,正如以上所提到的,Groovy 1.5对使用Groovy创建annotations的支持依然很弱-- annotations依然需要用Java编写。现在你可以用一般的Java语法在Groovy中定义annotations。

值得注意的摘要

Groovy 1.6-beta-1是基于JDK 5构建的,但是我们还是提高了JDK 1.4的"retro-translated"版本。
不过要注意的是当运行在JDK 1.4的时候,你可能体验不到以上所说的性能的大幅提升,因为某些提升是依赖于JDK 5的某些特性 (比如util.concurrent VM 的优化)。

除了annotations, enums and generics.外,Groovy编译器生成的字节码依然是1.4的JVM字节码

有用的链接

最新beta下载:
http://groovy.codehaus.org/Download

Release notes from JIRA here:
http://jira.codehaus.org/secure/ReleaseNote.jspa?projectId=10242&styleName=Html&version=14008

总结

在此要感谢很多人,包括users, contributors, committers, G2One员工,没有你们的辛勤劳作,就没有此次新版本的革新和提高

还有特别感谢Paul King, Danno Ferrin, Alex Tkachman and Jochen "blackdrag" Theodorou,他们提高了高质量的代码。

11
0
评论 共 11 条 请登录后发表评论
11 楼 山风小子 2008-05-04 15:07
关于利用八皇后代码进行性能测试的结果
请参考:http://www.blogjava.net/BlueSUN/archive/2008/05/03/197863.html

利用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%。
10 楼 tedeyang 2008-05-04 14:44
可见groovy团队换了领导者之后,短短2年确实有了巨大的变化。
9 楼 tedeyang 2008-05-04 14:43
继续关注。
等了它好几年。
那个八皇后测试把groovy 0.9的算术运算能力搞臭了。现在不知道会怎么样。呵呵
要能达到javascript的水准就非常好了。
8 楼 xiao0556 2008-05-04 14:37
Groovy很有活力呀,以后要多学一下了
7 楼 sinoyster 2008-05-04 13:50
发展太快了,关注中
6 楼 fight_bird 2008-05-04 11:52
Groovy的主页太花哨,找个东西却很难。
5 楼 agile_boy 2008-05-04 10:30
此次更新是开发分支的发布,目前1.6还不建议用于生产环境。
4 楼 yangzy666 2008-05-04 10:14
I'm sorry,what is Groovy?
3 楼 zjumty 2008-05-04 09:52
Groovy, 我很看好你哦~~~
2 楼 linginfanta 2008-05-04 09:12
Groovy,你太快了,没有时间看你。
1 楼 rockjava 2008-05-04 08:28
又更新了,groovy发展很快???

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 您的计算机配置似乎是正确的,但该设备或资源(www.microsoft.com)没有响应

    是你电脑本地网络协议出错把,打开控制台输入NETSH WINSOCK RESET 重置了试试 需要重启 个人验证:可行

  • 计算机网络试题

    一、 TCP/IP协议是一种开放的协议标准,下面哪个不是它的特点 A.独立于特定计算机硬件和操作系统 B.统一编址方案 C.政府标准 D.标准化的高层协议 C [解析] TCP/IP具有以下特点: 1)开放的协议标准,免费使用,并且独立于特定的计算机硬件与操作系统; 2)独立于特定的网络硬件,可以运行在局域网、广域网,更适用在互联网中; 3)统一的网络地址分配方案; 4)标准化的高层协议,可以提供很多可靠的用户服务。 滑动窗口协议主要用于进行( ) A差错控制 B安全控制 C流量控制 D拥塞控制 C

  • 资源处于联机状态,但未对连接尝试做出响应

    3.使用其它网络运营商提供的服务(如电信更换为联通,可以使用手机提供的热点进行尝试)按下【windows + x】组合键打开超级菜单,点击【命令提示符(管理员)】;然后勾选所有带 tls和ssl的选项并点击应用,然后重新启动计算机看看。您可以暂时尝试换用其它运营商网络(或者连接手机热点尝试一下)。如果仍然无法登录,通常这和VPN、dns 或是网络运营商有关。请尝试进入系统设置并搜索”网络重置“,然后进行重置网络。4.打开ie-设置-Internet选项-高级。首先关闭电脑上所有的代理与VPN软件。

  • 网站处于联机状态,但未对连接尝试做出响应

    服务器上配置了一个网站。有一个示例网站(可用)的配置,我是按照那个网站的配置来的。在服务器本机IP+端口号访问。完全没问题。在局域网内IP+端口号访问则会出现“网站处于联机状态,但未对连接尝试做出响应”这样的提示我想知道这是因为iis配置引起的还是有其他原因。最好能给个解决方案。 转载于:https://www.cnblogs.com/hfpqh/p/323881...

  • 网站响应时间过长的原因及解决方法

    遇到过类似问题,我认为有以下几个原因: 1、网站服务器故障维修(这种情况只能等段时间重新登录试试) 2、网络连接不通(查看网线接口处是否插好) 3、网站地址被和谐了(用代理) 4、本身网站程序卡死了(程序问题) 服务器网站响...

  • 网站处于联机状态,但未对连接尝试做出响应解决方案

    网站(http://xxx.xxxx.xxx)处于联机状态,但未对连接尝试做出响应解决方案。 chkconfig httpd on service httpd start /sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT /sbin/iptables -I IN

  • Australian EPG using ICETV with Vista continually breaks - Microso

    Australian EPG using ICETV with Vista continually breaks - MicrosoFor some time now in Australia the EPG with ICETV continually loses channels. Scheduled recording breaks. Whole EPG is unrelia

  • 简述 URL 并分别说明各部分的含义

    统一资源定位符(URL)是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。   Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL地址,这种地址可以是本地磁盘,也可以是局域网上的某一台计算机,更多的是Internet上的站点。简单地说,URL就是Web地址,俗称“网址”。   URI 方案集,包含如何访问 Internet 上的资源的明确指令。

  • IE起始页被改为 http://www.537.com 的解决

     故障现象:修改IE主页是成功的,但是双击IE总是进入 http://www.537.com,总要重新点击主页按钮才可以进入主页。搜索注册表,也没有发现相应的数值。分析:可能影响起始页的无非就是以下这些地方:Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Internet Expl

  • 如何通过HttpURLConnection得到http 302的跳转地址

    如何通过HttpURLConnection得到http 302的跳转地址

  • 您的计算机配置似乎是正确的,但该设备或资源(DNS 服务器)没有检测到有响应

    WIN7奇怪的网络问题,高手来一起探讨 转自    http://we.pcinlife.com/thread-1619822-1-1.html 网络环境:电信光纤→路由器→在路由器里设置好电信配备的IP地址、子网掩码、网关、DNS→交换机→各办公室电脑→所有电脑均设置为自动获取IP和DNS 出现问题:用XP的机器上网正常,我这台电脑用XP系统也可以正常上网,但用WIN7的时候就经常

  • HTTP 302跳转

    前言   Http 302对应生活中的真实例子,可以类比手机所对应的呼叫转移功能,这样打进A手机的电话,均转移到B手机接听。 正文   302状态码应用的典型场景是服务器页面路径的重新规划, 比如一个portal页面,换了新的域名,但是老的域名地址还有很多用户在使用,这样可以对老域名配置302跳转到新域名地址,保证服务的延续。 另外对于一些客户端预埋的Url链接,免不了老版本地址失效与更

  • 针对"您的计算机配置似乎是正确的,但该设备或资源(DNS 服务器)没有响应"问题解决

    针对一些用户(包括win7或者win8、8.1的所有用户)的计算机出现“你的计算机配置似乎是正确的,但该设备或资源(DNS服务器)没检测到有反应。”的问题。当对自己的网络适配器自动诊断时出现如下图所示现象: 对此,本人在亲身经历过此种“灾难“采取的办法是一下三个步骤: 第一步:点击“开始”,找到---运行(或者熟悉快捷键的朋友直接按win键+R), 输入cmd,进入到命令

Global site tag (gtag.js) - Google Analytics