Improve instantiation performance of ContextBase subclasses
-----------------------------------------------------------

         Key: CHAIN-32
         URL: http://issues.apache.org/jira/browse/CHAIN-32
     Project: Commons Chain
        Type: Improvement

    Versions: 1.0 Release    
 Environment: Any
    Reporter: Joshua Graham
    Priority: Trivial


Noted that iteration through pd[] array thrice: twice to eliminate() the 
"empty" and "class" entries, and lastly to add each remaining entry to the 
descriptors map. The first two iterations each include costly array copies.

Guessed that two if name.equals checks in the third iteration would tend to be 
much quicker (especially for Beans with many properties). Did some quick 
performance checks to verify that this is the case - it's enough of a change to 
warrant a small refactor.

Here's a revised initialize(). You can thus remove the eliminate() method...



        // Retrieve the set of property descriptors for this Context class
        try {
            pd = Introspector.getBeanInfo
                (getClass()).getPropertyDescriptors();
        } catch (IntrospectionException e) {
            pd = new PropertyDescriptor[0]; // Should never happen
        }

        // Initialize the underlying Map contents
        if (pd.length > 0) {
            descriptors = new HashMap();
            for (int i = 0; i < pd.length; i++) {
                String name = pd[i].getName();
                if ("class".equals(name) || "empty".equals(name)) {
                        // skip getClass() and isEmpty();
                }
                else {
                    descriptors.put(name, pd[i]);
                    super.put(name, singleton);                         
                }
            }
        }
    }


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to