On Fri, Jun 27, 2008 at 7:25 AM, yorlick kilroy <[EMAIL PROTECTED]> wrote:
> Hi Al, > > thx! you made my day :-) that did the trick! > replacing freemarker 2.3.8 with 2.3.13 speeded up my application by almost > 100% > It still doesn't come anywhere near my old struts2 application but I guess > its a fairly small trade-off when considering what struts2 has to offer. correction: I meant "old Struts1 application" not Struts2 > > --- joe > > > On Thu, Jun 26, 2008 at 5:09 PM, Al Sutton <[EMAIL PROTECTED]> wrote: > >> If your benchmark uses multiple threads throw in a freemarker upgrade to >> 2.3.13 and have another spin :). >> >> One thing you might want to bear in mind is that if you're using a >> persistance framework there maybe some back end fetching taking place >> between a.b.c and a.b.c.d. Even though you write simple beans and accessors >> you can't guarentee whats happening to your objects under the covers. >> >> Al. >> >> >> yorlick kilroy wrote: >> >>> I replaced OGNL 2.6.11 with the latest 2.7.2 Version. >>> I did a bit of benchmarking comparing the two and it absolutely surprised >>> me, that 2.7.2 in some cases is almost twice as slow as 2.6.11 >>> The test scenario: >>> iterate a large java.util.List in a jsp. the List contains a pretty >>> large >>> tree of objects. in the jsp I access a String property in the last node >>> of >>> this object graph. OGNL 2.6.11 takes roughly 600 ms to complete, 2.7.2 >>> roughly 1050 ms >>> >>> From that I gather that OGNL wasn't designed for high performance when >>> processing large and complex object trees in jsps. I guess I'll have to >>> go >>> back and do it like in the old Struts1 days: use shallow objects like in >>> ActionForms >>> >>> On Wed, Jun 25, 2008 at 8:31 PM, Dale Newfield <[EMAIL PROTECTED]> >>> wrote: >>> >>> >>> >>>> yorlick kilroy wrote: >>>> >>>> >>>> >>>>> Still... the "problem" seems to be the OGNL implementation in struts2. >>>>> >>>>> >>>>> >>>> I'm guessing here, but maybe your issues are related to: >>>> >>>> http://jira.opensymphony.com/browse/OGNL-141 >>>> >>>> Which has been pushed off in Xwork to 2.5: >>>> >>>> http://jira.opensymphony.com/browse/XW-631 >>>> >>>> And which has been pushed off in Struts2 until at least 2.1.3: >>>> >>>> https://issues.apache.org/struts/browse/WW-2128 >>>> >>>> You're welcome to update the version of ognl you're using in your own >>>> app >>>> (but remember to add javassist if so). >>>> >>>> <s:iterate ... > >>>> >>>> >>>>> <s:property value="#object.a.b.c.name"/> >>>>> <s:property value="#object.a.b.c.phone"/> >>>>> </s:iterate> >>>>> >>>>> >>>>> >>>> Theoretically this translates to a straight lookup for #object, then >>>> getA().getB().getC().getName()... >>>> If A, B, and C are just accessors, it should be fast. If they do much >>>> work >>>> to determine what to return, you're doing that work 2*N times (where N >>>> is >>>> the number of times through the loop) instead of just once...why would >>>> you >>>> put a long lookup like that in an iterator if it doesn't change with >>>> each >>>> iteration? >>>> >>>> -Dale >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [EMAIL PROTECTED] >>>> For additional commands, e-mail: [EMAIL PROTECTED] >>>> >>>> >>>> >>>> >>> >>> >>> >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [EMAIL PROTECTED] >> For additional commands, e-mail: [EMAIL PROTECTED] >> >> >