Very poor performance on bigger list or bigger <display:table> tag content
--------------------------------------------------------------------------

                 Key: DISPL-380
                 URL: http://jira.codehaus.org/browse/DISPL-380
             Project: DisplayTag
          Issue Type: Bug
          Components: Tag Library
    Affects Versions: 1.1
            Reporter: Tomasz Bech
            Priority: Critical


When the list to display is average (in my case ~2000) and there is big content 
of <display:table> preformance is very poor: ~40 second to display 20 results 
out of 2000.
I dig out and now see the way to improve it.
Scenario 
      <display:table contains some logic + display:columnt tags:
                <display:table id="oc" name="results" pagesize="${pagesize}" 
                        requestURI="${request.contextPath}" sort="list" 
defaultsort="1">

<!-- some logic here about 20 logic tags - very needed -->
                        <logic:iterate id="attr" name="x" property="b">
.....
                                                        <display:column 
property="a" 
....
/>
</display:table>

Obviously the display:table iterates its content through whole list - so all 
the tags are evaluated list.size() times. And it is very time consuming. 
doAfterBody called on TableTag in loop takes 38 seconds and real display of 
table (doEndTag) 2s in my case.

In fact it is enough to iterate the body of display:table ONCE, build the 
column structure and do the job in doEndTag. It will improve performance 
dramatically in such cases.
The only difference is that there cannot be any code inside which depends on 
the current row (for example getting the value from row and using it in anyway.

To keep compatibility, new flag can be added: evaluateBodyOnce [boolean] (or 
buildColumnStructureOnce) to switch from every-row-body-evaluation to 
one-time-body-evaluation.

(Now to improve performance a little bit, partialList can be used, but there is 
a lot of code to write addtionaly - to sort, to tract offset, etc).

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
displaytag-devel mailing list
displaytag-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/displaytag-devel

Reply via email to