【Groovy】Groovy 动态语言特性 ( Groovy 语言与 Java 语言执行效率对比 | 以动态特性编译的 Groovy 类 | 以静态特性编译的 Groovy 类 )
2023-06-13 09:18:00 时间
文章目录
一、以动态特性编译的 Groovy 类
Groovy 类都实现了 GroovyObject 接口 , 如下面的 Groovy 类 ,
class Farmer {}
编译后的字节码文件内容如下 :
public class Farmer implements GroovyObject {
@Generated
public Farmer() {
CallSite[] var1 = $getCallSiteArray();
super();
MetaClass var2 = this.$getStaticMetaClass();
this.metaClass = var2;
}
@Generated
@Internal
public MetaClass getMetaClass() {
MetaClass var10000 = this.metaClass;
if (var10000 != null) {
return var10000;
} else {
this.metaClass = this.$getStaticMetaClass();
return this.metaClass;
}
}
@Generated
@Internal
public void setMetaClass(MetaClass var1) {
this.metaClass = var1;
}
}
二、Groovy 语言与 Java 语言执行效率对比
Groovy 语言实现了动态性 , 是以牺牲执行效率和性能为代价的 ;
执行相同时间复杂度的代码 , 从消耗的时间上分析 , Groovy 语言是 Java 语言的几倍 ;
三、以静态特性编译的 Groovy 类
在 Groovy 类上 , 使用 @CompileStatic 注解 ,
@CompileStatic
class Farmer {}
即可关闭动态特性 , 按照普通的 Java 类进行编译 , 编译出的字节码如下 :
public class Farmer implements GroovyObject {
@Generated
public Farmer() {
MetaClass var1 = this.$getStaticMetaClass();
this.metaClass = var1;
}
@Generated
@Internal
public MetaClass getMetaClass() {
MetaClass var10000 = this.metaClass;
if (var10000 != null) {
return var10000;
} else {
this.metaClass = this.$getStaticMetaClass();
return this.metaClass;
}
}
@Generated
@Internal
public void setMetaClass(MetaClass var1) {
this.metaClass = var1;
}
}
这是按照静态语言的方式编译的字节码文件 ;
相关文章
- JSONObject中Java对象转换成Json格式的两种方式
- JAVA线程通信详解[通俗易懂]
- java 链表长度_Java实现单向链表[通俗易懂]
- java motherfree video_Java Config 下的Spring Test方式
- java高级工程师_一名Java高级工程师需要学什么?
- java 汉字乱码_Java中文乱码问题
- Java 入门练习(36 - 40)
- uint32 java_关于Java的int和C的uint32之间的转换
- JAVA静态内部类_java静态内部类实例化
- java异或运算_异或校验
- Java list foreach_java的foreach
- 时间调整Redis Java中Key的过期时间(redisjava过期)
- 清理Redis Java API实现过期清理(redisjava过期)
- 部署Java开发下的Linux部署(java开发linux)
- Linux 下安装Java:快速从零开始(linux 下载java)
- 秘籍学习实现纯Java版Redis(纯java版redis)
- 堆栈探索Java构建Oracle堆栈的可能性(java建oracle)
- Java导出Oracle数据提升数据分析流程效率(java导出oracle)
- Java程序中使用Redis链接提升效率(redis 链接java)
- java实现的简单猜数字游戏代码