AOP Benchmark 
1、性能测试的AOP或代理框架 
(1)字节码框架 
l         AspectWerkz 1.0 
l         AspectWerkz 2.x 
l         AspectJ 1.2 
l         JBoss AOP 1.0 
(2)代理框架 
l         Spring AOP 1.1.1 
l         cglib proxy 2.0.2 
l         dynaop 1.0beta 
(3)AspectWerkz可扩展Aspect容器 
l         AspectJ 
l         AOP Alliance 
l         Spring AOP 
  
2、性能测试结果 
 
| 
 AWBench (ns/invocation)  | 
 Aspect 
Werkz2.x  | 
 awproxy  | 
 Aspect 
Werkz1.0  | 
 aspectj  | 
 jboss  | 
 spring  | 
 dynaop  | 
 cglib  | 
 ext: 
aopalliance  | 
 ext: 
spring  | 
 ext: 
aspectj  |  
| 
 before, args() target()  | 
 10  | 
 25  | 
 606  | 
 10  | 
 220  | 
 355  | 
 390  | 
 145  | 
 -  | 
 220  | 
 -  |  
| 
 around x 2, args() target()  | 
 80  | 
 85  | 
 651  | 
 50  | 
 290  | 
 436  | 
 455  | 
 155  | 
 465  | 
 476  | 
 -  |  
| 
 before  | 
 15  | 
 20  | 
 520  | 
 15  | 
 145  | 
 275  | 
 320  | 
 70  | 
 -  | 
 40  | 
 10  |  
| 
 before, static info access  | 
 30  | 
 30  | 
 501  | 
 25  | 
 175  | 
 275  | 
 330  | 
 70  | 
    | 
 35  | 
    |  
| 
 before, rtti info access  | 
 50  | 
 55  | 
 535  | 
 50  | 
 175  | 
 275  | 
 335  | 
 75  | 
    | 
 35  | 
    |  
| 
 after returning  | 
 10  | 
 20  | 
 541  | 
 10  | 
 135  | 
 285  | 
 315  | 
 85  | 
 -  | 
 45  | 
 15  |  
| 
 after throwing  | 
 3540  | 
 3870  | 
 6103  | 
 3009  | 
 5032  | 
    | 
 6709  | 
 8127  | 
    | 
 -  | 
 3460  |  
| 
 before + after  | 
 20  | 
 30  | 
 511  | 
 20  | 
 160  | 
 445  | 
 345  | 
 80  | 
 -  | 
 35  | 
 20  |  
| 
 before, args() primitives  | 
 10  | 
 20  | 
 555  | 
 10  | 
 195  | 
 350  | 
 375  | 
 145  | 
    | 
 210  | 
    |  
| 
 before, args() objects  | 
 5  | 
 25  | 
 546  | 
 10  | 
 185  | 
 325  | 
 345  | 
 115  | 
    | 
 200  | 
    |  
| 
 around  | 
 60  | 
 95  | 
 470  | 
 10  | 
    | 
 225  | 
 315  | 
 75  | 
    | 
 -  | 
 90  |  
| 
 around, rtti info access  | 
 70  | 
 70  | 
 520  | 
 50  | 
 140  | 
 250  | 
 340  | 
 80  | 
 70  | 
 70  | 
 -  |  
| 
 around, static info access  | 
 80  | 
 90  | 
 486  | 
 25  | 
 135  | 
 245  | 
 330  | 
 75  | 
 80  | 
 80  | 
 -  |   
  
下面的表格以AspectWerkz 2.0.RC2-snapshot 作为参考标准: 
 
 
| 
 AWBench (relative %)  | 
 Aspect 
Werkz2.x  | 
 awproxy  | 
 Aspect 
werkz1.0  | 
 aspectj  | 
 jboss  | 
 spring  | 
 dynaop  | 
 cglib  | 
 ext: 
aopalliance  | 
 ext: 
spring  | 
 ext: 
aspectj  |  
| 
 before, args() target()  | 
 1 x  | 
 2.5 x  | 
 60.6 x  | 
 1 x  | 
 22 x  | 
 35.5 x  | 
 39 x  | 
 14.5 x  | 
 -  | 
 22 x  | 
 -  |  
| 
 around x 2, args() target()  | 
 1 x  | 
 1 x  | 
 8.1 x  | 
 0.6 x  | 
 3.6 x  | 
 5.4 x  | 
 5.6 x  | 
 1.9 x  | 
 5.8 x  | 
 5.9 x  | 
 -  |  
| 
 before  | 
 1 x  | 
 1.3 x  | 
 34.6 x  | 
 1 x  | 
 9.6 x  | 
 18.3 x  | 
 21.3 x  | 
 4.6 x  | 
 -  | 
 2.6 x  | 
 0.6 x  |  
| 
 before, static info access  | 
 1 x  | 
 1 x  | 
 16.7 x  | 
 0.8 x  | 
 5.8 x  | 
 9.1 x  | 
 11 x  | 
 2.3 x  | 
    | 
 1.1 x  | 
    |  
| 
 before, rtti info access  | 
 1 x  | 
 1.1 x  | 
 10.7 x  | 
 1 x  | 
 3.5 x  | 
 5.5 x  | 
 6.7 x  | 
 1.5 x  | 
    | 
 0.7 x  | 
    |  
| 
 after returning  | 
 1 x  | 
 2 x  | 
 54.1 x  | 
 1 x  | 
 13.5 x  | 
 28.5 x  | 
 31.5 x  | 
 8.5 x  | 
 -  | 
 4.5 x  | 
 1.5 x  |  
| 
 after throwing  | 
 1 x  | 
 1 x  | 
 1.7 x  | 
 0.8 x  | 
 1.4 x  | 
    | 
 1.8 x  | 
 2.2 x  | 
    | 
 -  | 
 0.9 x  |  
| 
 before + after  | 
 1 x  | 
 1.5 x  | 
 25.5 x  | 
 1 x  | 
 8 x  | 
 22.2 x  | 
 17.2 x  | 
 4 x  | 
 -  | 
 1.7 x  | 
 1 x  |  
| 
 before, args() primitives  | 
 1 x  | 
 2 x  | 
 55.5 x  | 
 1 x  | 
 19.5 x  | 
 35 x  | 
 37.5 x  | 
 14.5 x  | 
    | 
 21 x  | 
    |  
| 
 before, args() objects  | 
 1 x  | 
 5 x  | 
 109.2 x  | 
 2 x  | 
 37 x  | 
 65 x  | 
 69 x  | 
 23 x  | 
    | 
 40 x  | 
    |  
| 
 around  | 
 1 x  | 
 1.5 x  | 
 7.8 x  | 
 0.1 x  | 
    | 
 3.7 x  | 
 5.2 x  | 
 1.2 x  | 
    | 
 -  | 
 1.5 x  |  
| 
 around, rtti info access  | 
 1 x  | 
 1 x  | 
 7.4 x  | 
 0.7 x  | 
 2 x  | 
 3.5 x  | 
 4.8 x  | 
 1.1 x  | 
 1 x  | 
 1 x  | 
 -  |  
| 
 around, static info access  | 
 1 x  | 
 1.1 x  | 
 6 x  | 
 0.3 x  | 
 1.6 x  | 
 3 x  | 
 4.1 x  | 
 0.9 x  | 
 1 x  | 
 1 x  | 
 -  |   
  
测试环境:Java HotSpot 1.4.2,Windows 2000 SP4,Pentium M 1.6 GHz,1 G RAM 
  
   
 
  |