Hi Team,
I've put together another largish patch that changes the way properties and used by the FO objects, the layout managers and the FOEventHandler subclasses.
http://issues.apache.org/bugzilla/show_bug.cgi?id=31699
The performance increase is 42% while at the same time using %27 less
memory. The numbers comes from rendering the initial chapters of DocBook The Definite Guide [1] to a 131 page pdf file using jdk1.4.2_03. Performance is meassured in wallclock time and memory by finding the minimum -Xmx value where the document can be rendered (in steps of 1000000).
The improvement in performance and in memory are due to PropertyList now being a temporary object that is only available to a FObj during the call to FObj.bind(). All fo elements are required to extract all the properties that they need and to store the values as instance fields in the fo element.
When the PropertyList is a temporary object that isn't stored in the FObj, the size of the PropertyList does not matter and a much faster version can be used (implemented by StaticPropertyList).
The patch also adds correct property resolution for fo:marker and fo:retrieve-marker. Children of fo:marker has a memory efficient version of their PropertyList stored within the Marker object and they are re-bind'ed by fo:retrieve-marker each time a marker is retrieved.
Any objections?
[1] http://www.apache.org/~bckfnn/DocBookTDG.zip
regards, finn