your numbers imply that one uses JSF @ManagedBeans, isn't? LieGrue, strub
--- On Mon, 3/28/11, Martin Koci <[email protected]> wrote: > From: Martin Koci <[email protected]> > Subject: [core] performance: an optimal ELResolvers chain for POJO-based apps > To: [email protected] > Date: Monday, March 28, 2011, 6:50 PM > Hi, > > I'm optimizing render response on a large view (takes over > 3 secs to > render) and below you can see results of unsorted and > unfiltered > ELResolvers chain. The most important info is that > BeanELResolver > resolves property over 40000x from 64000 invocations. The > second place > belongs to ImplicitObjectResolver with over 20000 resolved > properties. > The reason why BeanElResolver is so successful is because > majority of > expressions looks like > {requestScope.pojoObject.propertyOne.propertyTwo}. > > > The obvious optimalization would be move the BeanELResolver > to top. But > you cannot: EL spec 2.2 javax.el.BeanELResolver: "If the > property is not > found or is not readable, a PropertyNotFoundException is > thrown." So > UEL spec. mandates that BeanELResolver must be last one > which resolves > not-null base and a property on that base. > > Do you know the reason for that? Do you have any ideas how > to move > BeanELResolver to top and avoid thousands of "empty" > geValue > invocations? > > Thanks, > > Kočičák > > > Results: > ImplicitObjectResolver: > getValue invocations: 64452 getValue hits: 21018 > > org.apache.myfaces.el.unified.resolver.CompositeComponentELResolver: > getValue invocations: 64336 getValue hits: 30 > > org.richfaces.skin.SkinPropertiesELResolver > getValue invocations: 64306 getValue hits: 0 > > org.richfaces.resource.ResourceParameterELResolver > getValue invocations: 64306 getValue hits: 0 > > org.jboss.weld.environment.servlet.jsf.WeldApplication > $LazyBeanManagerIntegrationELResolver > getValue invocations: 64306 getValue hits: 975 > > org.apache.myfaces.el.unified.resolver.ManagedBeanResolver > getValue invocations: 63331 getValue hits: 0 > > org.apache.myfaces.el.unified.resolver.ResourceResolver > getValue invocations: 63331 getValue hits: 64 > > javax.el.ResourceBundleELResolver > getValue invocations: 63267 getValue hits: 3 > > org.apache.myfaces.el.unified.resolver.ResourceBundleResolver > getValue invocations: 63264 getValue hits: 3 > > javax.el.MapELResolver: > getValue invocations: 63261 getValue hits: 1069 > > javax.el.ListELResolver: > getValue invocations: 62192 getValue hits: 0 > > javax.el.ArrayELResolver: > getValue invocations: 62192 getValue hits: 0 > > javax.el.BeanELResolver: > getValue invocations: 62192 getValue hits: 40563 > > org.apache.myfaces.el.unified.resolver.ScopedAttributeResolver > getValue invocations: 21629 getValue hits: 582 > >
