`

Groovy-Java性能对比

阅读更多

摘要:Groovy用@CompileStatic性能和Java一样,Script比Java慢一个数量级。 在业务方法占主要消耗时间的情况下,均无区别。

 

先说结论,如上面摘要所述,用Groovy的语法糖的同时如果苛求性能,就加@CompileStatic编译注解。

下面是用punit做的2次并发性能测试结果,第一次是执行一个简单的方法调用,第二个是模拟一个耗时的业务方法。

工程代码,请参考我的git:

http://git.oschina.net/key232323/groovy-performance-test

 

第一次:(只做计算)

[concurrent] Starting com.innohub.bench.runner.Tester

com.innohub.bench.runner.Tester

testDoCalJava() - [0.007931ms]

testGroovyInterfaceAndStatic() - [0.006531ms]

testGroovyInterface() - [0.078376ms]

testGroovyScript() - [0.099371ms]

total: 4, failures:0 (GREEN) - 919.502066ms

[concurrent] Starting com.innohub.bench.runner.Tester

com.innohub.bench.runner.Tester

testDoCalJava() - [0.006065ms]

testGroovyInterfaceAndStatic() - [0.007464ms]

testGroovyInterface() - [0.078376ms]

testGroovyScript() - [0.106368ms]

total: 4, failures:0 (GREEN) - 85.572821ms

[concurrent] Starting com.innohub.bench.runner.Tester

com.innohub.bench.runner.Tester

testDoCalJava() - [0.007931ms]

testGroovyInterfaceAndStatic() - [0.005598ms]

testGroovyInterface() - [0.079777ms]

testGroovyScript() - [0.091906ms]

total: 4, failures:0 (GREEN) - 500.078843ms

 

第二次:(Sleep 10ms模拟耗时的业务方法

[concurrent] Starting com.innohub.bench.runner.Tester

com.innohub.bench.runner.Tester

testDoCalJava() - [10053.493918ms]

testGroovyInterfaceAndStatic() - [10041.729026ms]

testGroovyInterface() - [10185.924769ms]

testGroovyScript() - [10039.974882ms]

total: 4, failures:0 (GREEN) - 41040.644815ms

[concurrent] Starting com.innohub.bench.runner.Tester

com.innohub.bench.runner.Tester

testDoCalJava() - [10058.807668ms]

testGroovyInterfaceAndStatic() - [10050.167577ms]

testGroovyInterface() - [10063.309659ms]

testGroovyScript() - [10067.116524ms]

total: 4, failures:0 (GREEN) - 40332.292666ms

[concurrent] Starting com.innohub.bench.runner.Tester

com.innohub.bench.runner.Tester

testDoCalJava() - [10028.900451ms]

testGroovyInterfaceAndStatic() - [10028.953634ms]

testGroovyInterface() - [10042.517924ms]

testGroovyScript() - [10037.078679ms]

total: 4, failures:0 (GREEN) - 40468.62882ms

分享到:
评论

相关推荐

    java、groovy、C#、Javascript性能比较

    java、groovy、C#、Javascript的运行效率到底如何? 通过实验比较,Javascript的运行效率解决java,看来基于javascript的html5前途远大。 C#的Release版的运行性能也相当高,和C++相差不大,值得推荐。 文件内部...

    eyes-selenium-java-1.42.zip

    标题中的"eyes-selenium-java-1.42.zip"表明这是一个使用Java编程语言,并与Selenium相关的开源项目,版本为1.42。Selenium是一个广泛使用的自动化测试工具,主要用于Web应用程序的自动化测试,尤其是浏览器上的交互...

    mysql-connector-java-5.1.46.jar

    MySQL Connector/J 5.1.46版本可能包含一些关键的bug修复和性能优化,对比更早的版本,它可能对特定的MySQL服务器版本有更好的支持。然而,对于新项目,建议使用更现代的版本,因为旧版本可能不再接收安全更新,且...

    Groovy and Grails Recipes(清晰PDF)

    - Groovy的动态特性与Java的静态特性比较 - Groovy中的类型推断 - 使用Groovy增强现有的Java代码 - Groovy与Java互操作的最佳实践 **3. Groovy Data Types and Control Structures** - **介绍**: 这一章节详细...

    开源力量公开课第19期-Java事件编程-彭晨阳

    #### 三、服务器性能对比 - **Java Servlets**:Netty、Vert.x 和原生Servlets在性能方面表现出色,特别是在与Ruby on Rails (RoR)、Node.js等其他框架的对比中。 - **基于NIO的Servlet**:自J2SE 1.4起,Java引入...

    Scripting in Java-带书签目录超清文字版.pdf

    1. **脚本语言介绍**:简述JavaScript、Groovy、JRuby等流行的Java脚本语言,比较它们的特性和用途。 2. **Java Scripting API**:详细介绍JSR 223,包括`ScriptEngine`、`ScriptEngineManager`和`ScriptContext`的...

    Groovy vs_ JRuby Presentation.ppt

    最后,演示文稿可能包含一个实际的演示部分,展示Groovy和JRuby在真实项目中的应用,以及性能比较。结论部分会总结两者的优缺点,帮助听众决定在特定情况下应该选择哪种语言。 总的来说,Groovy和JRuby各有千秋。...

    scala erlang groovy python 原理 比较 分析

    标题和描述均提到了对五种编程语言——Scala、Erlang、Groovy、Python以及它们各自的原理、比较和分析。这些语言各自拥有独特的特性和应用场景,在编程领域扮演着不同的角色。下面,我们将深入探讨每种语言的关键...

    groovy代码-groovy 表达式练习

    Groovy是一种基于Java平台的动态编程语言,它与Java语法高度兼容,但提供了更简洁的语法和更强大的元编程能力。在"groovy代码-groovy 表达式练习"这个主题中,我们主要探讨Groovy中的表达式及其在实际编程中的应用。...

    实战Java虚拟机——JVM故障诊断与性能优化

    带标签的,java虚拟机中比较好的一本书,值得阅读与收藏 随着越来越多的第三方语言(Groovy、Scala、JRuby等)在Java虚拟机上运行,Java也俨然成为了一个充满活力的生态圈。《实战Java虚拟机——JVM故障诊断与性能...

    进击的Java 第16期

    - **语言特点对比**:比较了Java与Groovy两种语言的主要特点和差异,突出Groovy作为动态语言在灵活性和易用性方面的优势。 - **迁移路径指导**:为希望从Java过渡到Groovy的开发者提供了实用建议,包括学习资源推荐...

    groovy代码-分库分表算法

    Groovy是一种基于Java平台的、动态、灵活的编程语言,常用于脚本编写和自动化任务。在这个场景下,`groovy代码-分库分表算法`可能是用来实现这种分布式数据库架构的。 首先,我们需要理解分库分表的基本原理。分库...

    Java/groovy脚本程序调用被测试应用bean

    脚本通过上下文applicationcontext获取被测试应用bean,从而可以进行接口内容获取等操作。目前该方式主要运用到性能平台脚本搭建、代码深度测试、接口测试、白盒测试等多方面。...支持Java、groovy脚本。

    【Java】超越 Java

    在“后Java时代”,作者可能探讨了诸如Scala、Kotlin、Groovy等现代JVM语言,它们在语法简洁性、类型系统、函数式编程特性等方面对Java进行了改进。此外,也可能提到了跨语言集成,如使用Jython或JRuby实现动态脚本...

    学编程选什么语言好?是PHP、Python还是Ruby?

    然而,虽然Python在某些方面性能优异,但在性能要求极高的情况下,可能需要寻找其他的解决方案。 最后,Ruby是一种动态的面向对象编程语言,其最著名的是Ruby on Rails(Rails)框架,该框架极大地简化了Web应用的...

    Java7开发文档

    6. **动态类型语言支持**:Java 7引入了JSR 292,允许在Java虚拟机上运行字节码级别的动态语言,如Groovy和JRuby。 7. **改进的字符串操作**:添加了`split()`方法的限制参数,以及`join()`方法,使得字符串处理...

    JMH简介Java开发Java经验技巧共8页.pdf.zi

    【标题】:“JMH简介Java开发Java经验技巧共8页.pdf.zi...总的来说,这份压缩文件提供了一个深入了解JMH,学习Java性能优化和开发技巧的机会。无论你是初学者还是有经验的开发者,都能从中获益,提升你的Java编程能力。

    λ表达式之争:Scala vs Java8

    在Java 8之前,Scala、Groovy和Clojure等基于JVM的语言已经广泛支持Lambda表达式,使得开发者能够更简洁地处理高阶函数。Java 8的引入,标志着这个强大的工具也被正式纳入Java的世界。 Lambda表达式在JVM层面上并不...

    JAVA上百实例源码以及开源项目源代码

    Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java...

Global site tag (gtag.js) - Google Analytics