[
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
>