-
1. 50% performance hit in ClonedObjectResolver.resolveCloned
samkwitty May 9, 2011 6:56 PM (in response to samkwitty)Actually on a moderately loaded machine it is more like 70%. So no one knows what this code is all about?
-
2. 50% performance hit in ClonedObjectResolver.resolveCloned
jbalunas May 13, 2011 8:22 AM (in response to samkwitty)Hi Sam,
Thanks for debugging the issue, and letting us know. Could you create a RichFaces jira https://issues.jboss.org/browse/RF to cover this issue and we'll review it closer.
It looks like there could certainly be some optimizations here!
Thanks,
-Jay
-
3. 50% performance hit in ClonedObjectResolver.resolveCloned
alexsmirnov May 13, 2011 4:21 PM (in response to samkwitty)Good catch. I created JIRA issue for that https://issues.jboss.org/browse/RF-10987 , going to take closer look next week
-
4. 50% performance hit in ClonedObjectResolver.resolveCloned
samkwitty May 17, 2011 1:36 AM (in response to alexsmirnov)Great thanks for looking into this. We are experiencing this in the 3.x code line. Looking at the JIRA item it is set for the 4.x code line. Does this mean it is not going to be fixed in 3.x?
-Sam
-
5. Re: 50% performance hit in ClonedObjectResolver.resolveCloned
evdelst2 Aug 16, 2011 4:47 PM (in response to samkwitty)What are the consequences if I disable this code?
Is it only used if (for example) a rich:graphValidator is used?
- Edwin
-
6. Re: 50% performance hit in ClonedObjectResolver.resolveCloned
samkwitty Aug 19, 2011 1:48 PM (in response to evdelst2)We have had it disabled ever since I posted the issue. Seems to have no impact and it runs way faster.
-
7. Re: 50% performance hit in ClonedObjectResolver.resolveCloned
prarora803 Feb 6, 2013 4:01 PM (in response to samkwitty)We seem to be facing the same issue in RichFaces 3.3.3. Since there is no patch for this defect in 3.x and we cannot upgrade to 4.x in the near future, we wanted to try out your solution of commenting out the culprit code.
Could you please tell us exactly what part of the code did you comment out? Was it just the UIGraphValidator or the entire resolveCloned method?
Also, did it have any impact on the application functionality?
Really appreciate your help!
-
8. Re: 50% performance hit in ClonedObjectResolver.resolveCloned
evdelst Feb 7, 2013 3:14 AM (in response to prarora803)Hi,
I created a new class org.richfaces.component.ClonedObjectResolver.
I haven't met any problems yet.
Edwin
/**
*
*/
package org.richfaces.component;
import java.beans.FeatureDescriptor;
import java.util.Iterator;
import javax.el.ELContext;
import javax.el.ELResolver;
/**
* @author asmirnov
*
*/
public class ClonedObjectResolver extends ELResolver {
/* (non-Javadoc)
* @see javax.el.ELResolver#getCommonPropertyType(javax.el.ELContext, java.lang.Object)
*/
@Override
public Class<?> getCommonPropertyType(ELContext context, Object base) {
// Do nothing
return null;
}
/* (non-Javadoc)
* @see javax.el.ELResolver#getFeatureDescriptors(javax.el.ELContext, java.lang.Object)
*/
@Override
public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context,
Object base) {
// do nothing
return null;
}
/* (non-Javadoc)
* @see javax.el.ELResolver#getType(javax.el.ELContext, java.lang.Object, java.lang.Object)
*/
@Override
public Class<?> getType(ELContext context, Object base, Object property) {
Object cloned = resolveCloned(context, base, property);
if(null != cloned){
context.setPropertyResolved(true);
return cloned.getClass();
}
return null;
}
/* (non-Javadoc)
* @see javax.el.ELResolver#getValue(javax.el.ELContext, java.lang.Object, java.lang.Object)
*/
@Override
public Object getValue(ELContext context, Object base, Object property) {
Object cloned = resolveCloned(context, base, property);
if(null != cloned){
context.setPropertyResolved(true);
}
return cloned;
}
/* (non-Javadoc)
* @see javax.el.ELResolver#isReadOnly(javax.el.ELContext, java.lang.Object, java.lang.Object)
*/
@Override
public boolean isReadOnly(ELContext context, Object base, Object property) {
// TODO Auto-generated method stub
return false;
}
/* (non-Javadoc)
* @see javax.el.ELResolver#setValue(javax.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
*/
@Override
public void setValue(ELContext context, Object base, Object property,
Object value) {
// TODO Auto-generated method stub
}
public static Object resolveCloned(ELContext context, Object base, Object property){
return null;
// if(null != base || null != property){
// FacesContext facesContext = FacesContext.getCurrentInstance();
// Map<String, Object> requestMap = facesContext.getExternalContext().getRequestMap();
// for (String key : requestMap.keySet()) {
// if(null != key && key.startsWith(UIGraphValidator.STATE_ATTRIBUTE_PREFIX)){
// UIGraphValidator.GraphValidatorState state = (GraphValidatorState) requestMap.get(key);
// System.out.println(""+key);
// if(state.isSame(base, property)){
// return state.getCloned();
// }
// }
// }
// }
// return null;
}
}
-
9. Re: 50% performance hit in ClonedObjectResolver.resolveCloned
prarora803 Feb 7, 2013 9:05 AM (in response to evdelst)Thank you so much Edwin! Really appreciate the help!
-Priyanka