<%@ page contentType="text/html; charset=gb2312"%> Groovy 1.6-beta-1发布,性能有大幅提高!
网站公告:   ◆北天JAVA技术网热情为java爱好者服务,本网内容包括JAVA(JSP、servlet、EJB、webservice、j2ee、javabean、应用服务器、JavaScript),数据库(MYSQL、SQL Server、Sybase、Oracle、DB2、数据库综合知识),设计研究(设计模式、Struts、Spring、Hibernate、设计框架、设计综合知识),WEB2.0新技术(主要介绍AJAX),以及各种技术的入门、实例、例子等等,欢迎各位多来坐坐!◆  诚邀各位JAVA爱好者加盟!◆  本网站内容丰富,更新快,保证每周20篇以上!  
加入收藏
设为首页
联系站长
承接项目
  相关资源:网站首页 | 免费培训学院 | 技术论坛 | JAVA聊天室 | 作家专栏 | 开发工具 | 认证考试 | 会员俱乐部
  JAVA技术初学者园地 | jsp与servlet | javascript | Java源代码 | EJB | web service | 应用服务器 | JAVA综合知识
  设计研究设计模式 | 设计框架 | Struts | Spring | Hibernate | 开源项目 | 面向对象设计 | 设计综合知识
  数 据 库MYSQL | SQL Server | Sybase | Oracle | DB2 | Informix | Access | 数据库综合知识
  其他资源:AJAX新技术 | 网站开发 | ERP软件 | OA办公软件 | 商业智能BI | 开发综合知识 | 承接项目 | 项目试用

 
 
Groovy 1.6-beta-1发布,性能有大幅提高!
     发布者: 发布时间:2008-05-05
感谢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。

一码(代码)胜万语 :)
Java代码复制代码
  1. def listOfN(numOfElem) \{ 1..numOfElem \}   
  2.   
  3. def a, b   
  4.   
  5. // variables will contain each successive element of the list  
  6. // and variables beyond the count of elements will be null  
  7. [a, b] = listOfN(1// a list of one element  
  8. assert a == 1  
  9. assert b == null  
  10.   
  11. // if there are more elements, they won't be assigned to any variable  
  12. [a, b] = listOfN(10// a list of ten elements  
  13. assert a == 1  
  14. assert b == 2  
  15.   
  16. // and you can swap variables with this notation  
  17. [a, b] = [b, a]   
  18. assert a == 2  
  19. assert b == 1  


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

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

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

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

当你使用@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,他们提高了高质量的代码。

TAG:
Groovy
groovy



(转载文章请保留出处:北天JAVA技术网(www.java114.com))
 
更多精彩文章:
微软宣布放弃收购雅虎
微软宣布放弃收购雅虎
开发框架:Java编程中Spring的一些负面因素
开发框架:Java编程中Spring的一些负面因素
Eclipse插件开发中实现刷新和重编译介绍
Java编程那些事儿15——如何学好Java语法
 
最近评论:
        
鍥炲
        
标 题:   
内 容:   
 
                                  
 
免责声明:该文章由网友发表,如果对您造成侵权,请联系站长

首页 - 承接项目 - 网站地图 - 联系我们 -
版权所有北天JAVA技术工作室 ICP证号:粤ICP备06079815号