根据an article Groovy已经
不幸的是,同时Groovy在运行时非常慢。作为一个为提高Groovy性能做了很多工作的人,我可以非常公开地谈论这个问题。 Groovy很慢。您可以轻松地期望在Java中重写的某些Groovy计算或数据转换将快3-5倍。通常这个因素是8-12,有时甚至更高。有人可以说Java总是在我们的服务中,并且没有人使用Groovy进行计算或数据处理......但是,嘿,这正是我的观点 - 我们为什么要限制自己只是编写脚本或处理简单的网页?
更糟糕的是事实 Groovy不能很好地扩展 多核计算机意味着 几个线程执行代码 由Groovy编译确实阻止了每一个 除了快速。它不是 许多应用程序的问题但是 许多其他人只是显示塞子。
有人可以证明或反驳这些段落吗?
我特别关注多线程性能。
答案 0 :(得分:6)
目前正在努力提高Groovy的速度,但应该说10次中有9次,性能不是问题。
然而,在这是一个问题,您可以 用Java编写该代码(并将该Java类轻松地集成到您的Groovy代码中),或者如果您想保持完全常规,你可以考虑使用Groovy++来提高Groovy的速度,使其更加静态类型化(使用一些重型推理来节省你必须像Java一样自己完成)
Groovy 1.8b4(目前处于测试版),还附带了与之捆绑的GPars框架。
GPars项目为开发人员提供服务 新的直观和安全的处理方式 同时执行Java或Groovy任务, 异步,分发 利用Java的力量 平台和灵活性 Groovy语言。
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)!!“
对于并行处理,您可以使用已捆绑的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仍然很慢......