Kirk,

There's a few things you can try to improve the speed:

- Use the 1.3 codebase. While it isn't final, it does have some significant improvements like Rickard's FastByteArrayOutputStream for the include tag. That alone is worth it imho.

- There is some areas of improvement that can be made to the codebase that I've found with a profiler. I can't remember all of them off the top of my head, but as an example the search order for action classes in the PrefixActionFactoryProxy class isn't optimal. If you look at the code it
will first search for the action in ww's action.standard package then in other packages defined in webwork.properties. This is less then optimal since most action calls (at least in our applications) are not for actions in ww's action package but rather packages we define. This leads to a lot of unneccessary ClassNotFoundExceptions being thrown. A simple solution is to just reverse the search order and search from the end of the prefix list to the front.

- Run the code inside of a profiler such as JProfiler, etc while at the same time hitting the page multiple times (use jmeter or the like). That will easily showcase the hotspots in the code.


If you want to provide me with the action that goes alone with your sample jsp page I'll be happy to profile it here and see if I can find any obvious issues, etc.


Regards,

Bruce Ritchie


Kirk Rasmussen wrote:
Thanks Dick!

After adding the following to my test JSP:
java.beans.PropertyEditorManager.registerEditor(String.class, sun.beans.editors.StringEditor.class);

I got a significant boost in performance but its still a little slow.
1) <ui:select> tag
Execution Time=4.253 sec

2) <ui:iterator> with <ui:property> tag
Execution Time=0.449 sec

3) JSP scriptlet using WW API
Execution Time=0.0020 sec

At this point I'm thinking of just implementing it as an include as a JSP scriplet using the WW API for the country list.
Any other ideas (other than caching)? If I've exposed a bottleneck in the WW UI tags then I'd like to help to fix it.

Thanks,
Kirk Rasmussen
Lucasfilm Ltd.


-----Original Message-----
From: Dick Zetterberg [mailto:[EMAIL PROTECTED]]
Sent: Monday, January 13, 2003 1:59 AM
To: [EMAIL PROTECTED]
Subject: Re: [OS-webwork] Slow performance using ww:iterator tag
(version 1.2.1)?


Hi Kirk,

I do not use the ui: tags myself (I stick with property and iterator etc),
so I cannot say for sure, but I believe the bad performance is due to the
use of PropertyEditors when printing the select list.

I had similar performance problems with the 1.2.1 version. The 1.3RC1
version does not have this performance problem because there one introduced
a cache of the PropertyEditors. Unfortunately that is not allowed since it
is not thread-safe at all (as have been discussed on the list).
Last week I posted a patch to the list (and Jira), that would fix this for
1.3, but I still have not heard of any committer adding it to CVS.

Anyway, back to your problem. What you can try is to patch the BeanUtil
class. Change the method:
String toStringValue(Object obj) to just do a:
if (obj == null) return ""; else return obj.toString();
However, then you cannot rely on any PropertyEditor to be used for
displaying your data. I do not know how important that is for you. Or you
could change it to:
if (obj == null) return""; else if (obj instanceof String) return (String)
obj; else (.... do the method as it is today...).

When I first had these performance problems I noticed that when the
PropertyEditorManager should return an editor for a String it took even
longer that normal! It seemed as if this was because the StringEditor was
not registered in the HashMap in the PropertyEditorManager, so it was not
found on the first lookup, but later when the manager checks for different
classnames etc.
So if you do not want to do the changes to Webwork code I described above,
you can try to add a String editor to the PropertyEditorManager like:
PropertyEditorManager.registerEditor(String.class,
sun.beans.editors.StringEditor.class);
That might improve your performance a bit.

Hope this helps! Good luck!

Best regards,

Dick Zetterberg

[EMAIL PROTECTED]

Original Message -----
From: "Kirk Rasmussen" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Sunday, January 12, 2003 2:38 AM
Subject: [OS-webwork] Slow performance using ww:iterator tag (version
1.2.1)?



Happy new year everyone!  I have a simple question about the
<webwork:iterator> tag and performance using WW 1.2.1.

I have this list of countries that contains 245 entries.
When I execute
the following fragment, it takes about 15 seconds to execute the iterator
loop by itself. Any of you WW gurus have some pointers on making it faster?
I can't simply cache the select list because the form is for an address book
so the selected value is user specific.

<%@ taglib uri="webwork" prefix="ww" %>
<%@ taglib uri="webwork" prefix="ui" %>
<%
   long start, end = -1;
%>

   <table width="100%">
   <tr>
   <!-- start cell with webwork components -->
   <ww:action name="'CountriesList'" id="countrieslist"/>
<% start = System.currentTimeMillis(); %>
   <ui:select label="'Country'" name="'country'"
list="@countrieslist/countries" listKey="'countryCode'"
listValue="'description'"/>

<% end = System.currentTimeMillis(); %>
   <!-- end cell with webwork components -->
   </tr>
   </table>
<p>
Execution Time=<%= ((double)end - start) / 1000.0 %> sec
</p>

Thanks,
Kirk Rasmussen
Lucasfilm Ltd.


-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld
http://www.vasoftware.com

_______________________________________________
Opensymphony-webwork mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork


-------------------------------------------------------
This SF.NET email is sponsored by: FREE SSL Guide from Thawte
are you planning your Web Server Security? Click here to get a FREE
Thawte SSL guide and find the answers to all your SSL security issues.
http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0026en
_______________________________________________
Opensymphony-webwork mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/opensymphony-webwork

--
AOL - bruceritchie101
ICQ - 9929791
MSN - [EMAIL PROTECTED]

http://www.jivesoftware.com/

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to