Thanks Mark ! > It should be possible to cache the ValueExpression per JSP page (in > the PageContext)
Yes, but the PageContext life's span is more or less a user request, no ? In this case, ValueExpression caching will only be usefull when exactly the same expression is used multiple times in the same JSP. And I agree that we are improving there a micro-benchmark. What I was thinking was more about caching ValueExpression per class of JSP (i.e. one cache for edit_002dclassictag_jsp.java) - the cache being shared by all users of the application. WDYT ? ----- Mail original ----- De : Mark Thomas <ma...@apache.org> À : Tomcat Users List <users@tomcat.apache.org> Cc : Envoyé le : Jeudi 8 Septembre 2011 13h09 Objet : Re: Re : Re : Re : Re : Performance issue in simpleTags and tagfiles On 08/09/2011 10:40, Adrian Gonzalez wrote: >> The parsed expressions are already cached. I don't think there is >> any scope for further caching here. > > > Parsed expressions are cached as org.apache.el.parser.Node instances > (in ExpressionBuilder#createNodeInternal) - if I understood > correctly. Correct. > What I was think was to cache javax.el.ValueExpression > instances, but not sure if it's correct to cache those instances > (what's scope ?). This isn't the biggest delay in my profiling (I use YourKit) whether I use sampling or tracing which just goes to show how much variation you can get from system to system and with different profilers. In my results, annotation scanning is still an issue for postConstruct / preDestroy. Enhancing the caching to handle these as well gives the following (with profiling disabled): The figures I saw were: Test OP Me Cached Cached2 tagfile 500 328 203 125 classic 100 141 156 141 simple 500 250 156 125 none 94 140 156 141 I've added that caching to trunk and tc7.0.x/trunk. With that problem fixed, the sampling and tracing show very different results which suggests to me that the tracing overhead is starting to dominate the results. > For instance, in a jsp compiled code, we have multiple calls to > PageContextImpl.proprietaryEvaluate. proprietaryEvaluate calls > createValueExpression and getValue. > > In a sample * 28% of proprietaryEvaluate time is spent on > createValueExpression, * 45% is spent on getValue The results of getValue can't be cached since the values of the resolved attributes may change between invocations. It should be possible to cache the ValueExpression per JSP page (in the PageContext) but I am not sure how much that will gain you. We may be into the realm of improving the results of a micro benchmark rather than generally improving performance. I'll take a look. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org