It would also be interesting to try different JSP page compilers, which
would also make a huge difference - for example, Jasper2 (used in Tomcat
4.1.x) versus the original Jasper in Tomcat 4.0.

On the Sun JVM, one additional variable is to try the "-server" system
property at startup time for your container.  This selects the HotSpot
mode optimized for long-running server applications, versus the default
"-client" setting.

Craig


On Tue, 10 Sep 2002 [EMAIL PROTECTED] wrote:

> Date: Tue, 10 Sep 2002 13:34:08 -0500
> From: [EMAIL PROTECTED]
> Reply-To: Struts Users Mailing List <[EMAIL PROTECTED]>
> To: Struts Users Mailing List <[EMAIL PROTECTED]>
> Cc: 'Struts Users Mailing List' <[EMAIL PROTECTED]>
> Subject: RE: Improving performance by splitting JSP?
>
>
> Our test tag was using a HashMap.
>
> You can view this performance quirk yourself using Struts bean:message tag.
> To get orders of magnitude in the performance discrepancy (to make sure we
> were measuring the tag performance difference on a much more significant
> scale than server access variance times) we went to 200,000 tag exectutions
> done a variety of ways:
>
> One of our cases was a page with 20 tags, inside a loop 10,000 times.
> Another case was same page, but done by 160 tags inside a 1250 loop.
> Another case same page rendered by includes:  page included another page 8
> times inside a 1250 loop.  The included page had 20 tags.
>
> There were other varieties, but these three show the discrepancy in
> performance with the increased number of tags very significantly.  All
> three cases output the same resulting html.  All three cases executed the
> tag code 200,000 times.  The first and third cases, with 20 custom tag
> occurrences, performed roughly the same (better performance).  The second
> case with 160 tags performed much much worse.  I don't have our statistics
> anymore, alas, but it was two or more orders of magnitude worse.  We tried
> an 80 tag variety as well, and it put the expected point on the slope
> (significantly worse than same output rendered via 20 tags, not as bad as
> 160 tags).
>
> Switching to IBM VM, or turning profiling flags on in the Sun VM before
> running the tests, caused the performance discrepancy between these
> approaches to vanish (roughly the better performance mark for all three).
>
> Be wonderful if someone else could verify on their own.  Two days of
> cursing over it was enough for us ;-).  As soon as we realized we could fix
> the problem pages by restructuring them into separate JSPs, we declared
> victory over the Mystery of the VM ;-).
>
> Again this was 1.3, who knows if Sun's 1.4 vm still does this....
>
> Jimbo
>
> Build a simple JSP that contains
>
>
>
>                       "Hajratwala,
>                       Nayan (N.)"              To:       "'Struts Users Mailing 
>List'" <[EMAIL PROTECTED]>
>                       <[EMAIL PROTECTED]        cc:
>                       m>                       Subject:  RE: Improving performance 
>by splitting JSP?
>
>                       09/10/2002 01:02
>                       PM
>                       Please respond to
>                       "Struts Users
>                       Mailing List"
>
>
>
>
>
>
> Was it a Hashtable or HashMap?
>
> It might be that since Hashtable is synchronized you were encountering a
> bottleneck in your multithreaded environment, whereas just a regular loop
> would not have this problem...
>
> ---
> - Nayan Hajratwala
> - Chikli Consulting LLC
> - http://www.chikli.com
>
>
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, September 10, 2002 11:48 AM
> To: Struts Users Mailing List
> Subject: RE: Improving performance by splitting JSP?
>
>
>
> I had to go back and look at the test code we used, but yes - looks like we
> did try a non-body tag.  It did a hashtable lookup for whatever key values
> was passed in as a parameter.  I remember we found that we could only
> recreate the performance discrepancy with tags that did some kind of memory
> lookup; just adding loops around arithmetic statements are writing output
> were tried, but did not exhibit the symptoms.
>
> Jim Weaver
> Software Developer - ThoughtWorks
>
>
>
>
>                       "Martin Cooper"
>
>                       <martin.cooper@tumb        To:       "'Struts Users
> Mailing List'" <[EMAIL PROTECTED]>
>                       leweed.com>                cc:
>
>                                                  Subject:  RE: Improving
> performance by splitting JSP?
>                       09/09/2002 05:24 PM
>
>                       Please respond to
>
>                       "Struts Users
>
>                       Mailing List"
>
>
>
>
>
>
>
>
>
>
>
> > -----Original Message-----
> > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> > Sent: Monday, September 09, 2002 2:51 PM
> > To: Struts Users Mailing List
> > Subject: RE: Improving performance by splitting JSP?
> >
> >
> >
> > Yup, we looked at overall size of the JSP as well, and the
> > association with
> > performance was definitely number of bm/bw tags within a
> > single JSP rather
> > than overall JSP size.  We even tried editing the generated
> > servlet code
> > and adding big unused methods to see if the problem had to do with
> > generated servlet file size.  That would kind've made sense, but was a
> > negative.  I believe we also tried a tag that just did a
> > sysout rather than
> > any kind of memory lookup (hashtable or properties file) and
> > found that
> > this performance quirk in the sun vm did not appear in that case.
>
> When you wrote your own tags (the message/write equivalents, I mean), did
> you happen to play with body versus non-body tags? When I was wrestling
> with
> the "too many tags" problem a while ago, I ended up writing my own versions
> of some of the Struts tags so that they were non-body tags, because they
> caused noticeably less code to be generated. I didn't measure performance
> differences, but I wouldn't be surprised to see a noticeable improvement
> there too.
>
> --
> Martin Cooper
>
>
> >
> > We could never pin down a why, it seemed that the sun 1.3 vm
> > just ran like
> > a snail with a lot of bm or bw tags in a single page, so we
> > stopped doing
> > that ;-).  Same number of tags split up into multiple JSPs,
> > or a few tags
> > called the same number of times via a loop - OK performance.
> >
> > It is very true also that splitting them up into smaller
> > bites makes them
> > more readable and maintainable, so it was a good solution all
> > around.  It's
> > just that you are always nervous when you fix a problem and
> > don't know the
> > why of it ;-).
> >
> > Jimbo
> >
> >
> >
> > --
> > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> >
> >
>
>
> --
> To unsubscribe, e-mail:   <
> mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <
> mailto:[EMAIL PROTECTED]>
>
>
>
>
>
>
>
> --
> To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
>
> --
> To unsubscribe, e-mail:   <
> mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <
> mailto:[EMAIL PROTECTED]>
>
>
>
>
>
>
>
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>
>


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to