Groovy:与Java相比,多线程性能差,计算速度慢?

时间:2011-02-06 09:00:25

标签: java groovy comparison performance

根据an article Groovy已经

  

不幸的是,同时Groovy在运行时非常慢。作为一个为提高Groovy性能做了很多工作的人,我可以非常公开地谈论这个问题。 Groovy很慢。您可以轻松地期望在Java中重写的某些Groovy计算或数据转换将快3-5倍。通常这个因素是8-12,有时甚至更高。有人可以说Java总是在我们的服务中,并且没有人使用Groovy进行计算或数据处理......但是,嘿,这正是我的观点 - 我们为什么要限制自己只是编写脚本或处理简单的网页?

     

更糟糕的是事实   Groovy不能很好地扩展   多核计算机意味着   几个线程执行代码   由Groovy编译确实阻止了每一个   除了快速。它不是   许多应用程序的问题但是   许多其他人只是显示塞子。

有人可以证明或反驳这些段落吗?

我特别关注多线程性能。

4 个答案:

答案 0 :(得分:6)

目前正在努力提高Groovy的速度,但应该说10次中有9次,性能不是问题。

然而,在这是一个问题,您可以 用Java编写该代码(并将该Java类轻松地集成到您的Groovy代码中),或者如果您想保持完全常规,你可以考虑使用Groovy++来提高Groovy的速度,使其更加静态类型化(使用一些重型推理来节省你必须像Java一样自己完成)

Groovy 1.8b4(目前处于测试版),还附带了与之捆绑的GPars框架。

  

GPars项目为开发人员提供服务   新的直观和安全的处理方式   同时执行Java或Groovy任务,   异步,分发   利用Java的力量   平台和灵活性   Groovy语言。

{edit July 2012}

Groovy 2.0有一个CompileStatic注释,你可能想要研究一下(因为现在Groovy ++还没有开发好几个月)。 This question here有一些数字......

答案 1 :(得分:6)

  

通常这个因素是8-12和   有时甚至更高。有人可以说   Java总是在我们的服务和   没有人使用Groovy进行计算或   数据处理......但是,嘿,它是   我的观点 - 我们为什么要限制   我们自己只是脚本或   处理简单的网页?

我们不再需要限制自己了! Groovy 1.8已经发布了! ; - )

fib(42)的

Groovy 1.8.x 原型需要大约3.8秒 (比Java慢12%,超过100次 比Groovy 1.0更快)所以我们可能不再鼓励人们写作了 Java中的“热点”。“

来源:http://www.wiki.jvmlangsummit.com/images/0/04/Theodorou-Faster-Groovy-1.8.pdf

现在是Groovy与Scala的表现!请查看:

“我对Groovy的性能有多大提升感到印象深刻 数值计算。我的项目jlab中的 Groovy 1.8 (http://code.google.com/p/jlabgroovy/) 在我的其他项目ScalaLab中,有时优于Scala的性能 (http://code.google.com/p/scalalab)!!“

来源:http://groovy.329449.n5.nabble.com/Great-improvements-in-Groovy-s-performance-for-numerical-computing-td4334768.html

对于并行处理,您可以使用已捆绑的GPars!

干杯

答案 2 :(得分:3)

我只能提供计算中Groovy表现不佳的轶事证据(诚然,大约2岁):

我在Groovy中实现了一个优化算法,发现它无法忍受。对其进行分析表明它花费了大约60%的时间在BigDecimal.divide()。罪魁祸首原来是一行,对浮点值进行了非常简单的算术计算,Groovy不知何故坚持转换为BigDecimal。我试图避免让它做了一点但是失败了,所以我用Java重写了应用程序的那部分,并且执行时间下降了90%。

答案 3 :(得分:2)

“用于fib(42)的Groovy 1.8.x原型需要大约3.8s(比Java慢12%,比Groovy 1.0快100多倍)所以我们可能不再鼓励人们写出这样的'热点'了Java“的。

我刚刚尝试过,这是非常不准确的。用于fib(42)的Groovy 1.8比java慢约25倍。在我的测试中,java fib(42)需要2秒,其中1.8和1.7.8需要大约52秒才能完成。

Groovy仍然很慢......