Andy Schwartz created TRINIDAD-2447:
---------------------------------------
Summary: UIComponent.isCompositeComponent() is slow for
UIXComponents
Key: TRINIDAD-2447
URL: https://issues.apache.org/jira/browse/TRINIDAD-2447
Project: MyFaces Trinidad
Issue Type: Bug
Components: Components
Affects Versions: 2.1.0-core
Reporter: Andy Schwartz
Assignee: Andy Schwartz
Priority: Minor
The JSF implementations hammer on UIComponent.isCompositeComponent () - eg.
this is called for each time the pushComponentToEL()/popComponentFromEL()
methods are called, which is all of the time.
isCompositeComponent() performs the following check:
component.getAttributes().containsKey(Resource.COMPONENT_RESOURCE_KEY);
Unfortunately, this operation is slower than it should be for Trinidad-based
UIXComponents. There reason for this is the non-optimal implementation of
containsKey in Trinidad's ValueMap:
public boolean containsKey(Object key)
{
if (key == null)
throw new NullPointerException();
PropertyKey propertyKey = _getPropertyKey(key);
if (_bean.keySet().contains(propertyKey))
return true;
else
return _bean.bindingKeySet().contains(propertyKey);
}
We're creating key sets for both the FacesBean properties and value
expressions. Aside from the overhead of creating these key sets, this also
means that we bypass optimizations in FlaggedPropertyMap.
This is showing up as a hot spot in JProfiler, so would like to see this
optimized.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)