【问题标题】:What is the performance of Groovy 2.0 with static compilation静态编译的 Groovy 2.0 性能如何
【发布时间】:2012-07-05 12:32:14
【问题描述】:

我看到最近发布的 Groovy 2.0 包括可选的静态编译以及其他一些额外的好处,比如可选的静态类型检查。经过一番搜索,我找不到任何广泛的基准来比较 Groovy 的性能(使用静态编译)与 Java 和可能的 Scala。有谁知道任何这样的性能比较?我们可以假设它与 Groovy++ 在它死之前是一样的吗?如果它的性能相当,Groovy 是否会成为大型、性能关键型应用程序的可行替代方案?

【问题讨论】:

    标签: java scala groovy groovy++


    【解决方案1】:

    有一些benchmarks here(虽然很难看出发生了什么)

    但是,从页面底部获取 Groovy 1.8.2 Fib 源代码,并在 groovy 2.0 中运行它会得到:

    Groovy(static ternary): 1623ms
    Groovy(static if): 1583ms
    Groovy(instance ternary): 1744ms
    Groovy(instance if): 1694ms
    

    @groovy.transform.CompileStatic 放在脚本顶部会给你:

    Groovy(static ternary): 819ms
    Groovy(static if): 799ms
    Groovy(instance ternary): 816ms
    Groovy(instance if): 811ms
    

    显然,这不是一个完整的基准测试(它只是测试一件事),它不包括预热或任何东西,而且 Groovy 2.0 才发布一周,但它确实暗示了在这种情况下有很好的速度改进...

    【讨论】:

    • 不错。这是一个非常显着的改进。
    • 感谢 Tim,这正是我正在寻找的链接类型,尽管很高兴看到 Groovy 2.0(静态)和 Java/Scala 性能之间的更多比较。我认为你是对的,但我们可能不得不等待,因为它只发布了一周。
    • 我相信 java 在 550 毫秒左右运行这些测试
    • @user1503949 您总是可以花几分钟来启动一个编译器并运行所有 3 个编译器,看看您会得到什么结果?可能比试图让人们为你做这件事更容易、更快捷?
    • @tim_yates 这最后的评论似乎是不必要的尖刻。我希望让程序员在实际应用程序中体验 Groovy 2.0 的性能。看看问题的最后一部分。
    【解决方案2】:

    我相信 java 在大约 550 毫秒内运行这些测试

    我与 Java 做了一些性能比较。对于使用 @CompileStatic 的 Groovy 的“静态三元”和“静态 if”性能,与使用 Java 的性能有些相同。对于“instance ternary”和“instance if”,它几乎是 2 的因数。请参阅我的 blog post

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多