<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    JBoss Reflect Performance Javassist vs Introspection
</h3>
<span style="margin-bottom: 10px;">
    reply from <a href="http://community.jboss.org/people/kabir.khan%40jboss.com">Kabir Khan</a> in <i>JBoss Microcontainer Development</i> - <a href="http://community.jboss.org/message/537994#537994">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>In case the volcanic ashes clear and the planes work on Tuesday so I can go on holidays, here is the current status of the jboss-reflect on javassist implementation.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><div id="_mcePaste"> </div><div id="_mcePaste">The javassist implementation is feature complete as far as I know, we are just waiting for javassist 3.12.0 before we can do a release.</div><div> </div><div><span>I created a branch to test it in AS: </span><a class="jive-link-external-small" href="https://svn.jboss.org/repos/jbossas/branches/KABIR_JAVASSIST_REFLECT/" target="_blank">https://svn.jboss.org/repos/jbossas/branches/KABIR_JAVASSIST_REFLECT/</a><span> and a Hudson run using that branch at </span><a class="jive-link-external-small" href="http://hudson.qa.jboss.com/hudson/view/JBoss%20AS/job/JBoss-AS-6.0.x-testSuite-sun16-KABIR-REFLECT-JAVASSIST/" target="_blank">http://hudson.qa.jboss.com/hudson/view/JBoss%20AS/job/JBoss-AS-6.0.x-testSuite-sun16-KABIR-REFLECT-JAVASSIST/</a><span>. There seem to be no major differences between the test runs, although that is hard to say due to timeout issues on Hudson, and AS trunk's number of failures changing. Once AS 6.0.0-M3 is out, it might be an idea to delete and recreate the branch off M3 since we then know for sure that trunk completed with 0 failures. The differences between the branch's component-matrix/pom.xml and the one in trunk are:</span></div><div> </div><div>-&#160;&#160;&#160; &lt;version.javassist&gt;3.11.0.GA&lt;/version.javassist&gt;<br/>+&#160;&#160;&#160; &lt;version.javassist&gt;3.12.0-SNAPSHOT&lt;/version.javassist&gt;</div><div>-&#160;&#160;&#160; &lt;version.org.jboss.man&gt;2.1.1.SP1&lt;/version.org.jboss.man&gt;<br/>+&#160;&#160;&#160; &lt;version.org.jboss.man&gt;2.1.1.SP2&lt;/version.org.jboss.man&gt;</div><div>-&#160;&#160;&#160; &lt;version.org.jboss.reflect&gt;2.2.0.Alpha4&lt;/version.org.jboss.reflect&gt;<br/>+&#160;&#160;&#160; &lt;version.org.jboss.reflect&gt;2.2.0-SNAPSHOT&lt;/version.org.jboss.reflect&gt;</div><div> </div><div>This has been added to the branches&#160; run.sh to make sure javassist is being used by jboss-reflect:</div><div># Setup JBoss specific properties<br/>JAVA_OPTS="${JAVA_OPTS:+$JAVA_OPTS -Dprogram.name=$PROGNAME}"<br/>+JAVA_OPTS="${JAVA_OPTS:+$JAVA_OPTS -Dorg.jboss.reflect.spi.TypeInfoFactory=org.jboss.reflect.plugins.javassist.JavassistTypeInfoFactory}"<br/>JAVA_OPTS="${JAVA_OPTS:--Dprogram.name=$PROGNAME}"</div><div> </div><div>Apart from that everything should be the same. I use <a class="jive-link-external-small" href="http://www.orcaware.com/svn/wiki/Svnmerge.py">svnmerge.py</a> to periodically merge the latest changes from Hudson trunk, to do this download svnmerge.py and then go into your local checkout of the branch and merge using svnmerge.py, e.g:</div><div> </div><div>$cd KABIR_JAVASSIST_REFLECT</div><div>$~/svnmerge.py merge</div><div>$svn commit -F svnmerge-commit-message.txt</div><div> </div><div>Give it time to filter through to anonsvn and then start the Hudson run, I think Flavia already has the admin password. If not ask QA for a password.</div><div> </div><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>The main thing I am looking at now is making the javassist implementation more performant. This is documented in <a class="jive-link-thread-small" href="http://community.jboss.org/thread/150697">JBoss Reflect Performance Javassist vs Introspection</a> since using the javassist implementation is currently slower than using the introspection one. I'll let you know where I get in that thread before I leave.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>It just occurred to me that another factor in currently making this slow _could_ be the classpools since we need to look CtClasses up there. I have not measured anything, but it is worth bearing in mind and investigating since it is an extra layer on top of the plain classloading which is used by the introspection implementation.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>If I can think of anything else I will let you know on this thread before I go away.</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/537994#537994">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss Microcontainer Development at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2115">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>