反射和动态代理性能对比

本文对比了原生、JDK反射、JDK动态代理、CGLIB反射、CGLIB动态代理、JAVAASSIST动态代理、ASM动态代理在加载类和方法调用上的性能差异,结果显示CGLIB在无参数加载类中表现最佳,而JDK反射在有参数的加载类中速度最快;CGLIB在方法调用上则表现出最优效率。

因为项目中需要用反射机制加载类,所以做了下性能评测

测试结果对比表:(平均执行时间)

 原生JDK反射JDK动态代理CGLIB反射CGLIB动态代理JAVAASSIST动态代理JAVAASSIST动态代理(字节码生成)ASM动态代理
加载类(ms)0(332ns)1(1304383ns)4

(FastClass)

0(49328ns)

2232500(629017ns)
方法调用(ms)34289133 

(FastMethod)

25

54153 39 36 
         
         
         

结论:

无参数的加载类,响应时间排序:CGLIB Reflect<ASM<JDK Reflect,CGLIB最快;

有参数的加载类,响应时间排序:JDK Reflect<CGLIB,JDK反射最快;

方法的调用,响应时间排序:ASM<CGLIB Reflect<JDK Reflect;

加载类建议采用JDK反射

方法调用建议采用CGLIB

转载于:https://www.cnblogs.com/shipengzhi/articles/2721118.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值