Java groovy如何提升代码运行效率

 更新时间:2020年09月24日 10:45:47   作者:贾树丙  
这篇文章主要介绍了Java groovy如何提升代码运行效率,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

刚开始学groovy,知道了它会先变异成class 文件,然后再用jvm 执行。写了Hello World程序,查看它的编译文件,发现groovy的效率挺低的。不但编译文件的代码多,而且需要依赖很多groovy包,导致了不能够直接使用java 命令运行class文件

比较如下:

Java版Hello World,JavaTest.java

public class JavaTest {
  public static void main(String[] args){
    System.out.println("Hello World!");
  }
}

编译后:JavaTest.class

public class JavaTest {
  public JavaTest() {
  }

  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}

Groovy版Hello World,GroovyTest.groovy

GroovyTest.groovy
class GroovyTest {
  static void main(args){
    println "Hello World!";
  }
}

编译后:GroovyTest.class

import groovy.lang.GroovyObject;
import groovy.lang.MetaClass;
import org.codehaus.groovy.runtime.callsite.CallSite;

public class GroovyTest implements GroovyObject {
  public GroovyTest() {
    CallSite[] var1 = $getCallSiteArray();
    MetaClass var2 = this.$getStaticMetaClass();
    this.metaClass = var2;
  }

  public static void main(String... args) {
    CallSite[] var1 = $getCallSiteArray();
    var1[0].callStatic(GroovyTest.class, "Hello World!");
  }
}

Groovy 升级版,GroovyTest.groovy

println("Hello World");

编译后:GroovyTest.class

import groovy.lang.Binding;
import groovy.lang.Script;
import org.codehaus.groovy.runtime.InvokerHelper;
import org.codehaus.groovy.runtime.callsite.CallSite;

public class GroovyTest extends Script {
  public GroovyTest() {
    CallSite[] var1 = $getCallSiteArray();
  }

  public GroovyTest(Binding context) {
    CallSite[] var2 = $getCallSiteArray();
    super(context);
  }

  public static void main(String... args) {
    CallSite[] var1 = $getCallSiteArray();
    var1[0].call(InvokerHelper.class, GroovyTest.class, args);
  }

  public Object run() {
    CallSite[] var1 = $getCallSiteArray();
    return var1[1].callCurrent(this, "Hello World");
  }
}

越高级的语言,封装的越多,开发简单效率低

越底层的语言,封装的越少,开发复杂效率高

所以如果追求效率的话,还是使用Java代码的好。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java面试题冲刺第九天--MyBatis

    Java面试题冲刺第九天--MyBatis

    这篇文章主要为大家分享了最有价值的三道MyBatis框架面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 浅析JAVA中toString方法的作用

    浅析JAVA中toString方法的作用

    以下是对在JAVA中toString方法的作用进行了详细的分析介绍,需要的朋友可以参考下
    2013-07-07
  • 带你了解Java数据结构和算法之哈希表

    带你了解Java数据结构和算法之哈希表

    这篇文章主要为大家介绍了Java数据结构和算法之哈希表,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Spring Cloud @RefreshScope 原理及使用

    Spring Cloud @RefreshScope 原理及使用

    这篇文章主要介绍了Spring Cloud @RefreshScope 原理及使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • Java日常练习题,每天进步一点点(39)

    Java日常练习题,每天进步一点点(39)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • Maven插件之Dependency:analyze的使用

    Maven插件之Dependency:analyze的使用

    在软件开发中,合理管理项目依赖是保证构建稳定性的关键,Maven作为流行的项目管理工具,提供了Dependency插件来帮助开发者分析和优化项目依赖,通过执行dependency:analyze指令,可以辨识项目中使用的、未声明的、和未使用的依赖项
    2024-10-10
  • java随机事件分发器示例

    java随机事件分发器示例

    这篇文章主要介绍了java随机事件分发器示例,需要的朋友可以参考下,功能需求和代码实现在下面
    2014-03-03
  • Java利用异常中断当前任务的技巧分享

    Java利用异常中断当前任务的技巧分享

    在日常开发中,我们经常遇到调用别人的代码来完成某个任务,但是当代码比较耗时的时候,没法从外部终止该任务,所以本文为大家介绍了如何利用异常中断当前任务,需要的可以参考下
    2023-08-08
  • 如何安装jdk及安装MyEclipse的图文教程

    如何安装jdk及安装MyEclipse的图文教程

    这篇文章主要介绍了如何安装jdk及安装MyEclipse的图文教程,需要的朋友可以参考下
    2018-03-03
  • RestTemplate的DELETE及PUT等请求方法使用精讲

    RestTemplate的DELETE及PUT等请求方法使用精讲

    这篇文章主要为大家介绍了RestTemplate的DELETE及PUT等请求方法的使用精讲,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03

最新评论