2009/3/5 Rickard Öberg <[email protected]> > Niclas Hedhman wrote: > > Rickard, > > You mention before that we could optimize a lot if we could get hold > > of the Method index, and stick it into an array for quick lookup > > instead of the hashmap now in place. You wanted to use some other > > bytecode manipulator for it. > > Actually, it is CGLIB I wanted to use for it, which has this built-in. > > > Perhaps the "slot" field in the java.lang.reflect.Method class could > > help. It holds the index of the method in the declared class. Not sure > > if still problematic, as I suspect it could become a question of > > "which interface" instead, but I thought I mention it just in case > > anyway. > > Interesting idea! I made a quick test, but unfortunately there are two > problems: > 1) "slot" is private, so I have to use reflection to get it -> slow
it's also implementation dependent - it might not be called that in other JVMs 2) it is the slot in the interface, and a composite may have several > interfaces, so the slot "0" is going to be duplicated many times, so > it's not possible to use it for lookup. > > With CGLIB one essentially creates a proxy that holds one invoker per > method, so when the invoker is called you know exactly which method is > being dispatched. The invoker holds on to the CompositeMethodModel, and > so no lookup whatever is done... faaaast... > +1 will much better (and faster) > /Rickard > > _______________________________________________ > qi4j-dev mailing list > [email protected] > http://lists.ops4j.org/mailman/listinfo/qi4j-dev > -- Cheers, Stuart
_______________________________________________ qi4j-dev mailing list [email protected] http://lists.ops4j.org/mailman/listinfo/qi4j-dev

