Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Very Slow Fields Cut

Not quite sure why we aren't able to see comparable numbers...

Those first numbers of mine where on the Mac, now on windows.
AspectJ1.6.0 and Sun java 1.5.

> ajc -1.5 -showWeaveInfo *.java
Join point 'field-set(int SuperCar.model)' in Type 'SuperCar'
(SuperCar.java:2) advised by
around advice from 'SuperObjectController ' (SuperObjectController.java:9)

Join point 'field-get(int SuperCar.model)' in Type 'SuperCar'
(SuperCar.java:5) advised by
around advice from 'SuperObjectController ' (SuperObjectController.java:4)

Join point 'field-set(int SuperCar.model)' in Type 'SuperCar'
(SuperCar.java:9) advised by
around advice from 'SuperObjectController' (SuperObjectController.java:9)

> javap -verbose SuperCar

public int getModel();
  Code:
   Stack=5, Locals=2, Args_size=1
   0:   aload_0
   1:   astore_1
   2:   aload_0
   3:   aload_1
   4:   invokestatic    #39; //Method
SuperObjectController.aspectOf:()LSuperObjectController;
   7:   aload_0
   8:   aconst_null
   9:   invokestatic    #65; //Method
model_aroundBody3$advice:(LSuperCar;LSuperCar;LSuperObjectController;LSuperObject;Lorg/aspectj
/runtime/internal/AroundClosure;)Ljava/lang/Object;
   12:  invokestatic    #53; //Method
org/aspectj/runtime/internal/Conversions.intValue:(Ljava/lang/Object;)I
   15:  ireturn

See the unwanted conversion at offset12 (because your advice returned
an Object but the field was an int).  Similar story for setModel().

New aspect, compile the same way

>  javap -verbose SuperCar
public int getModel();
  Code:
   Stack=5, Locals=2, Args_size=1
   0:   aload_0
   1:   astore_1
   2:   aload_0
   3:   aload_1
   4:   invokestatic    #39; //Method
SuperObjectController.aspectOf:()LSuperObjectController;
   7:   aload_0
   8:   aconst_null
   9:   invokestatic    #55; //Method
model_aroundBody3$advice:(LSuperCar;LSuperCar;LSuperObjectController;LSuperObject;Lorg/aspectj
/runtime/internal/AroundClosure;)I
   12:  ireturn

Cast is gone, same in setModel()

As I mentioned in my first reply, the generated code (1) obtains the
aspect instance (2) calls the advice in the aspect

Old aspect (1000000 calls)
Super:202
Normal:16
Super:101
Normal:46
Super:89
Normal:28

New aspect:
Super:86
Normal:47
Super:55
Normal:46
Super:33
Normal:17

Perhaps I'm overlooking something that should become apparent now i've
told you everything - let me know if i'm doing something wrong.

cheers,
Andy.

2008/5/9 nnaass <alaamurad@xxxxxxxxx>:
>
> Hey Eric ,
> Thanks for the advice, but do you know an easy way to to switch the compiler
> to abc ?
>
> Thanks
>
> Eric Bodden-2 wrote:
>>
>> Hello.
>>
>>> I need a high performance AOP. I guess I need to look at the javassist to
>>> because I could add the pointcut with only 50% performance loss.
>>
>> Maybe you should first check out abc
>> (http://abc.comlab.ox.ac.uk/introduction) if you have not yet done so.
>> I know that the abc developers spent a lot of time making sure that at
>> least such trivial cases are very well optimized.
>>
>> Eric
>>
>> --
>> Eric Bodden
>> Sable Research Group
>> McGill University, Montréal, Canada
>> _______________________________________________
>> aspectj-users mailing list
>> aspectj-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>>
>>
>
> --
> View this message in context: http://www.nabble.com/Very-Slow-Fields-Cut-tp17139141p17158968.html
> Sent from the AspectJ - users mailing list archive at Nabble.com.
>
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>


Back to the top