动态代理方案性能对比
转于自己在公司的Blog:
http://pt.alibaba-inc.com/wp/experience_1054/dynamic_proxy_performance.html
因服务框架需要用动态代理生成客户端接口的stub,所以做了一下性能评测,
动态代理工具比较成熟的产品有:
JDK自带的,ASM,CGLIB(基于ASM包装),JAVAASSIST,
使用的版本分别为:
JDK-1.6.0_18-b07, ASM-3.3, CGLIB-2.2, JAVAASSIST-3.11.0.GA
(一) 测试结果:
数据为执行三次,每次调用一千万次代理方法的结果,测试代码后面有贴出。
(1) PC机测试结果:Linux 2.6.9-42.ELsmp(32bit), 2 Cores CPU(Intel Pentium4 3.06GHz)
(六) 字节码对比
(1) JDK生成的字节码:private static BytecodeProvider buildBytecodeProvider(String providerName){ if ( "javassist".equals( providerName ) ) {return new org.hibernate.bytecode.javassist.BytecodeProviderImpl(); }else if ( "cglib".equals( providerName ) ) {return new org.hibernate.bytecode.cglib.BytecodeProviderImpl(); } .......
Gavin King也是RedHat旗下的,当然选同宗的了,呵呵。