I've started a stress test framework, which lives under
src/test/org/jboss/test/aop/stress. I'll be fleshing it out over the next few weeks
and posting my findings here. To run the
org.jboss.test.aop.stress.perinstancemethodinvocation test for example
| $ build.sh -f build-tests-jdk50.xml main loadtime-ga-test loadtime-test
-Dtest=stress/perinstancemethodinvocation
|
The good news
=============
1) For method interception etc. using per_vm interceptors in generated advisors seem a bit
faster than classic despite the extra method call in the weaving model.
2) For method interception etc. using per_vm aspects generated advisors seem about 10%
faster than classic, probably because now the generated joinpoint classes call the advice
method directly rather than relying on a generated class
3) Executing this 100000 times initially caused an OutOfMemoryError
| <interceptor name="Int1"
class="org.jboss.test.aop.stress.perinstancemethodinvocation.PerInstanceInterceptor"
scope="PER_INSTANCE"/>
|
| <bind pointcut="execution(*
org.jboss.test.aop.stress.perinstancemethodinvocation.POJO->method1())">
| <interceptor-ref name="Int1"/>
| </bind>
|
|
| public void execute(int thread, int loop) throws Exception
| {
| POJO pojo = new POJO();
| pojo.method1();
| }
|
I have fixed the leak, so this problem does not occur anymore
The bad news
============
* Executing the per_instance example from above with generated advisors takes about 21
times as long as using classic. This is probably because for each new object, (Just
working off memory here) if an object has per_instance aspects we then need to obtain a
per_instance domain, populate the domain, redo all the bindings, and generate a unique
joinpoint class for every single object. So I think we need to differentiate between cases
where we actually have overridden something in the instance domain (i.e. dynamic aop) and
where we are basically just inheriting everything from the parent.
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4031020#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...