[reportlab-users] Tons of table questions

Paul Barrass paul.barrass at safeonlinebilling.com
Thu Feb 26 06:32:13 EST 2009


Dinu Gherman wrote:

> Hi,

>

> I guess this is the main (FAQ one) to start with... How can I make

> tables render more quickly?

I refer you again to my earlier post
http://two.pairlist.net/pipermail/reportlab-users/2008-October/007594.html
[Potential workaround for performance issues on VERY long tables.], and
the thread cited in that post
http://two.pairlist.net/pipermail/reportlab-users/2004-May/003019.html
[Large tables - exponentially increasing run times] which discusses the
O(n^2) behaviour. Both posts suggest that the idea is worth making a
note of in the documentation.


>

> Do plain strings instead of Paragraphs help?

I've found that plain text rather than Paragraphs leads to an
approximate doubling of rendering speed, I've also found that the extra
flexibility obtained by using a Paragraph (most notably word-wrapping,
but also more control over styling etc.) is worth the extra time, but YMMV


> Does it help to preset all column widths with fixed values? Is the

> LongTable class the solution?

I've always used fixed-width tables, so can't really comment from
experience, though I think the LongTable class works to improve
performance on the width-setting stage of Table generation.


> And finally, is there a workaround to speedup table rendering by

> splitting it into little chunks and concatenating them? In order

> for that to work one would need a table header that is shown only

> at the beginning of a new frame. Is that realistic?

This is, or at least was in 2004, the way to do it. I'm not sure if any
improvements to the Table splitting code have been made since then. My
workaround of wrapping the fragments in a PTOContainer allows table
headers (and I guess footers) to be used when the Table is split between
pages.

Paul Barrass.


More information about the reportlab-users mailing list