Groovy 的性能

233 views
Skip to first unread message

Ali Yang

unread,
Dec 8, 2009, 4:24:20 AM12/8/09
to Grails联盟-GrailsUnion
今天试了一下 Groovy 的性能,一个 10万次的循环,里面就是一句 i++ 。Groovy 和 Java 的性能相差了70倍,虽说
Groovy 可以慢点,但也太慢了吧。用 Python 写了个类似的脚步,速度也很快。我是用 groovy 命令执行的。有没有大牛能解释下速度
为啥差这么多。

Liu Chao

unread,
Dec 8, 2009, 4:29:22 AM12/8/09
to grail...@googlegroups.com
这是老故事了。涉及数字计算而且对效率要求高的部分不要用groovy来做。

2009/12/8 Ali Yang <yang...@gmail.com>

今天试了一下 Groovy 的性能,一个 10万次的循环,里面就是一句 i++ 。Groovy 和 Java 的性能相差了70倍,虽说
Groovy 可以慢点,但也太慢了吧。用 Python 写了个类似的脚步,速度也很快。我是用 groovy 命令执行的。有没有大牛能解释下速度
为啥差这么多。




--
My Grails Powered Website:
http://team.goal98.com

Grails Melody Plugin:
https://svn.codehaus.org/grails-plugins/grails-grails-melody

Grails Templar Poject:
http://code.google.com/p/grails-templar/

Liu Chao

unread,
Dec 8, 2009, 4:30:36 AM12/8/09
to grail...@googlegroups.com
你的loop怎么写的?100000.times{} ?

2009/12/8 Liu Chao <liuc...@gmail.com>

Ali Yang

unread,
Dec 8, 2009, 4:48:06 AM12/8/09
to grail...@googlegroups.com
不是,是最基本的写法

for ( ; ; ) { }

2009/12/8 Liu Chao <liuc...@gmail.com>
你的loop怎么写的?100000.times{} ?

 
--
Ali Yang
----------------------------------------
Blog: http://ssailyang.javaeye.com
Twitter: https://twitter.com/aliyang
MSN: yang_...@hotmail.com
QQ: 407131746
----------------------------------------

Liu Chao

unread,
Dec 8, 2009, 4:50:37 AM12/8/09
to grail...@googlegroups.com
用for (int x in 1..10000) {} 呢?

2009/12/8 Ali Yang <yang...@gmail.com>

Ford Guo

unread,
Dec 8, 2009, 4:57:28 AM12/8/09
to grail...@googlegroups.com
groovy在于提高开发效率,至于运行效率嘛,再期待更高版本吧,(1.6已经提升过很大了,好像1.7应该也有吧)
Ford Guo


2009/12/8 Liu Chao <liuc...@gmail.com>

Ali Yang

unread,
Dec 8, 2009, 5:03:34 AM12/8/09
to grail...@googlegroups.com
public class Performance {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        double num = 1.1D;
        for (long i = 0; i < 10000000L; i++) {
            num++;
        }
        long end = System.currentTimeMillis();
        System.out.println(num);
        System.out.println(end - start);
    }
}

我装了 Groovy 1.7 rc1。源码相同,只是一个后缀是 groovy,一个是 java。groovy 的需要 31xx,java 是 24。这个差距有点大,130 倍。Groovy 需要改进的还有很多呀。

2009/12/8 Ford Guo <agil...@gmail.com>
groovy在于提高开发效率,至于运行效率嘛,再期待更高版本吧,(1.6已经提升过很大了,好像1.7应该也有吧)
Ford Guo

Liu Chao

unread,
Dec 8, 2009, 5:13:39 AM12/8/09
to grail...@googlegroups.com
以前有个例子是图像转换的,用java几秒钟,用groovy几小时,那个更夸张。
所以要用对的东西做对的事。

2009/12/8 Ali Yang <yang...@gmail.com>

Ali Yang

unread,
Dec 8, 2009, 5:31:17 AM12/8/09
to grail...@googlegroups.com
看来用 Groovy 做东西要注意了,不能一味注重语法简洁。刚收藏了一堆关于 Groovy 性能的文章,回家慢慢看了。不过对于像我写的那段代码,Groovy 应该是有很大优化空间的,毕竟语法是一模一样的。

2009/12/8 Liu Chao <liuc...@gmail.com>

以前有个例子是图像转换的,用java几秒钟,用groovy几小时,那个更夸张。
所以要用对的东西做对的事。

clt.phoenix

unread,
Dec 8, 2009, 5:35:32 AM12/8/09
to grail...@googlegroups.com
不明白groovy的编译器怎么写的, 看异常的话,都是一堆的 反射,

难道不能 直接编译成 相对高效一点的jvm指令?

在 Tue, 08 Dec 2009 18:31:17 +0800,Ali Yang <yang...@gmail.com> 写道:

> 看来用 Groovy 做东西要注意了,不能一味注重语法简洁。刚收藏了一堆关于
> Groovy
> 性能的文章,回家慢慢看了。不过对于像我写的那段代码,Groovy
> 应该是有很大优化空间的,毕竟语法是一模一样的。
>
> 2009/12/8 Liu Chao <liuc...@gmail.com>
>
>> 以前有个例子是图像转换的,用java几秒钟,用groovy几小时,那个更夸张。
>> 所以要用对的东西做对的事。
>>
>
>
>


--
使用 Opera 革命性的电子邮件客户程序: http://www.opera.com/mail/

Alex wang

unread,
Dec 8, 2009, 5:45:46 AM12/8/09
to grail...@googlegroups.com
对于运算的性能有一些差异是可能的,部分可以考虑同时用别的,比如java或者scala等。

想到一个问题,那就是每一个工具有自己擅长的一面,记得上次在InfoQ上一个哥们说的,你不要把不应该归flex的问题来找flex本身,比如flex是专注于前端的,你非要把后端的问题拿来为难它只能是你不合时宜。我想对于Grails也可以这么认为哦,呵呵。

不过话说回来,性能的问题我始终是不担心的,反正有人会关心他,我的应用很少是海量的,真的是海量的时候也不用怕,有集群,有N多方案伺候.

现在的阶段我关心快,下一阶段我关心漂亮,(1)所以flex和AIR是下一阶段关心的地方,尤其是和Grails结合的地方,昨晚看了和Grails有关的Flex演示效果还确实不赖,很让人兴奋。(2)另外,有人Grails和SOA的专题也有点好玩,不知有没兄弟有这方面在做的事情。



---------------------------------------------
Alex wang
website:颠覆软件 http://www.foxlog.org
twitter: http://twitter.com/foxlog
douban: http://www.douban.com/people/foxlog
gmail: idea.wang[at]gmail.com


2009/12/8 clt.phoenix <clt.p...@gmail.com>

Sam Liu

unread,
Dec 10, 2009, 8:29:02 PM12/10/09
to grail...@googlegroups.com
我也在研究Grails和Flex的结合效果,呵呵……初步决定用GrantDS

2009/12/8 Alex wang <idea...@gmail.com>

--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛“Grails联盟-GrailsUnion”论坛。
 要在此论坛发帖,请发电子邮件到 grail...@googlegroups.com
 要退订此论坛,请发邮件至 grailsunion...@googlegroups.com
 更多选项,请通过 http://groups.google.com/group/grailsunion?hl=zh-CN 访问该论坛

-~----------~----~----~----~------~----~------~--~---


Ford Guo

unread,
Dec 10, 2009, 8:47:31 PM12/10/09
to grail...@googlegroups.com
纯FLEX+GRAILS还是比较笨重的,尤其是FLEX编译既慢又高CPU.
Ford Guo


2009/12/11 Sam Liu <world...@gmail.com>

--

您收到此邮件是因为您订阅了 Google 网上论坛的“Grails联盟-GrailsUnion”论坛。
要向此网上论坛发帖,请发送电子邮件至 grail...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 grailsunion...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/grailsunion?hl=zh-CN 访问此网上论坛。

Rosen Jiang

unread,
Dec 10, 2009, 8:49:15 PM12/10/09
to grail...@googlegroups.com
完全不建议网页使用“纯FLEX”!

2009/12/11 Ford Guo <agil...@gmail.com>
Reply all
Reply to author
Forward
0 new messages