反射和动态代理性能对比

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

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

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

(FastClass)

0(49328ns)

22 32 50 0(629017ns)
方法调用(ms) 34 289 133 

(FastMethod)

25

54 153  39  36 
                 
                 
                 

结论:

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

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

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

加载类建议采用JDK反射

方法调用建议采用CGLIB

posted @ 2012-10-12 12:13  跳刀的兔子  阅读(880)  评论(0编辑  收藏  举报