Groovy 2.0 vs. Java性能对比

[来源] 达内    [编辑] 达内   [时间]2012-08-31

Kotlin是一个相对比较新的、静态类型的、基于JVM的、兼容Java的编程语言。Kotlin比Java更加简洁,并支持变量类型推断、高阶函数(闭包)、构造函数、混淆(mixins)和一级委托等。Kotlin更接近Scala,并且 Java能够很好地兼容。

  Groovy 2.0已于今年6月份发布,该版本支持静态类型检测,并改进了性能,集成了JDK7 invokedynamic和类型推断,以便从JVM对动态语言的支持中获益。

  而开发者也比较关心Groovy 2.0相比之前的版本性能改善了多少,以及与Java相比性能如何。开发者Oliver Plohmann做了一项测试,以对比Groovy 2.0和Java的性能。

  Oliver称,在某些情况下,性能之间的差别已经变得很小,或者至少可以接受。但是,Groovy已经用于生产很长时间了,现在是时候认真考虑一下Groovy的性能了。

  Oliver此次使用他唯一能在网上找的基准测试jlabgroovy,且只能测试有/无@CompileStatic注解的Groovy代码计算斐波那契数列的速度。就是说,这项测试只是对Groovy和Java的性能有一个粗略的估计,而对于想知道整体性能差异的开发者来说,这些测试数据不是非常有意义的。

  测试环境

  由于jlabgroovy基准测试是基于Groovy语言的,并不包含用于计算斐波那契数列的Java代码,因此Oliver将Groovy 代码移植到Java(测试代码),并进行测试。测试环境如下:

  CPU:Intel Core2 Duo E8400 3.00 GHz

  操作系统:Windows 7 with Service Pack 1

  Java版本:JDK7u6

  IDE:Eclipse Juno + Groovy插件

  Groovy编译器版本:2.0.0.xx-20120703-1400-e42-RELEASE

  测试结果

  测试结果如下(加入了Kotlin语言以作对比):

  

 

  我们可以看到,使用了静态类型的Groovy,所用时间已经明显减少。静态类型和类型推断对于Groovy的性能影响不言而喻,这意味着以同样的方式进行优化的Groovy++(Groovy的静态类型增强版)也变得非常强大。

  数据显示,有了@CompileStatic,Groovy大约比Java慢1-2倍,而没有@CompileStatic,大约慢3-5倍。遗憾的是,“instance ternary”和“instance if”基准测试是最慢的。因此,除非开发者想使用静态方法来构建一个伟大的作品,否则“static ternary”和“static if”测试数据对于目标是面向对象(基于实例)的大多数代码来说不是很重要。

  新型JVM语言Kotlin

  在上面的测试中,Oliver加上了Kotlin(测试代码)的测试数据。使用的版本为Kotlin 0.1.2580。

  Kotlin是一个相对比较新的、静态类型的、基于JVM的、兼容Java 的编程语言。Kotlin比Java更加简洁,并支持变量类型推断、高阶函数(闭包)、构造函数、混淆(mixins)和一级委托等。Kotlin更接近Scala,并且与Java能够很好地兼容。

  Kotlin目前仍处于开发阶段,官方正式版本还未发布,JetBrains(Kotlin开发商)仍然在对其代码进行优化。理想情况下,Kotlin应该和Java一样快。

资源下载