Feature #4188
closedConsider performance-related patches to Render.
0%
Description
The Render subsystem does a great job styling and laying out complex documents, though longer documents/tables that take advantage of styling can be somewhat CPU intensive.
For a simple benchmark, I've attached a file report_long.xml.gz, which is based on examples/widgetgallery/approot/report.xml with the table row section repeated an additional 19 times. If it is uncompressed and copied over the existing report.xml, the widgetgallery media/pdf-output page can be used to render it as a PDF (19 pages) and provide rough timing estimates. With an optimized gcc-4.7 build, this takes around 3.2 seconds to render on my laptop running Debian 7.8 (wheezy) with an Intel® Core™ i7-2620M CPU @ 2.70GHz. With a debug build, it takes just over 10 seconds.
Attached for your consideration are two patches that reduce the render times for this document to 1.4 seconds (2.3x faster) for the optimized build and 3.2 seconds (3.1x faster) for the debug build. Of course, the actual improvement will be affected by document complexity and system/compiler differences.
The patched version passes the bundled Wt "test" application and the PDF output for the original report.xml and the report_long.xml matches the unpatched version.
Additional notes are included with the patch files. If I can be of assistance with additional testing or modifications for portability, just let me know.
Files
Updated by Koen Deforche over 9 years ago
- Status changed from New to InProgress
- Assignee set to Koen Deforche
Updated by Koen Deforche over 9 years ago
- Status changed from InProgress to Resolved
- Target version set to 3.3.5
Thanks for the patches. They will give trouble to the Java port, but we'll deal with it as the performance gain cannot be ignored.
Updated by Bruce Toll over 9 years ago
Thanks for this. It's very much appreciated.
Updated by Koen Deforche over 9 years ago
- Status changed from Resolved to Closed