Kabir Khan [
http://community.jboss.org/people/kabir.khan%40jboss.com] replied to the
discussion
"JBoss Reflect Performance Javassist vs Introspection"
To view the discussion, visit:
http://community.jboss.org/message/538013#538013
--------------------------------------------------------------
To summarize, the steps I want to take here are:
1) Decide if we should bother to do parameter checking. If we decide to keep it, it should
be done by Javassist[Method/Constructor/Field]Info and not in the generated
JavassistMethod/-Constructor/-Field implementations. This can easily be turned off in the
generated classes by passing in check=false to the JavassistMemberFactory create methods.
2) Enable stats for the JavassistMethodInfo.invoke(),
JavassistConstructorInfo.newInstance() and JavassistFieldInfo.get()/set() so we can run AS
with that and get an idea of the usage of these joinpoints.
3) Avoid creating too many JavassistMethod/-Constructor/-Field implementations. There is
an overhead associated with creating these, both in terms of filling up PermGenSpace and
in CPU time since each member that gets one of these needs to first generate the class and
then to call ClassLoader.defineClass() which takes time.
JavassistMethod/-Constructor/-Field should only be generated for
Javassist[Method/Constructor/Field]Infos whose invoke()/newInstance()/get()/set() are
called a lot. The data from 2) should give us some understanding of which members they
are. Javassist[Method/Constructor/Field]Infos which are NOT called a lot should simply use
reflection to call the target member. I think reflection should be the default.
4) Come up with some differentiator (as mentioned earlier) to be able to specify if a
member should have JavassistMethod/-Constructor/-Field generated or not.
5) Let's stay with Javassist for now, and go with asm if javassist can not be improved
upon in the time allowed. Creating yesterday's benchmark, I found as long as you have
got the hang of one it is quite easy to look at the other.
I will start off by doing some work on 2) and let you know how far I get with the others
before Tuesday
--------------------------------------------------------------
Reply to this message by going to Community
[
http://community.jboss.org/message/538013#538013]
Start a new discussion in JBoss Microcontainer Development at Community
[
http://community.jboss.org/choose-container!input.jspa?contentType=1&...]