Michael Hunger wrote: > I looked into another direction. (Or rather two). > > First I replaced the HashMap by an GrowingMap that uses an Array(List) backed > Map implementation up until 10 elements > and a HashMap later. As I assume that a single mixin will seldom have more > than 10 methods this should speed up things > considerably. On my machine it went up from 2 mio to 3.3 mio invocations / s. > > Secondly. I looked at the implementation of method.equals and it seems to be > quite expensive (imho). > > I started replacing method with a MethodInfo object in CompositeModel but it > didn't work out as creating the MethodInfo > again and again costs to much. If the method info was the object that would > be handled inside of qi4j then the benefit > would appear as it wouldn't have to be created all the time. (Additional > benefit would be that it can handle > serialization of methods and so no separate method-map implementation would > be needed anymore. > > If you think this is useful I'll submit it into the repo (the first one)
Definitely sounds interesting. The main problem I can see is that when we get a proxy call from Dynamic Proxies we get a Method, which then has to be translated into the internal MethodInfo. Doesn't that lead to the same lookup as we are talking about? Or how would you avoid that lookup? With CGLIB it is trivial, of course, but with plain proxies? /Rickard _______________________________________________ qi4j-dev mailing list [email protected] http://lists.ops4j.org/mailman/listinfo/qi4j-dev

