Jens Vagelpohl wrote:
9 Feb 2007, at 09:29, Marko Kruijer wrote:
I do notice that my suspected page is slow, but that's a page
template, and there is not very much out of the ordinary going on
there. Just a loop in tal over a sql result set.
"Just a loop in tal over a sql result set" can be extremely slow,
depending on the size of your result set. You may not realize that every
time you touch one of those resultset record objects the security
machinery gets in the game to ensure the executing user is allowed to
see the rendered result. This is true for every single field you're
trying to show on the page.
I've been having similar speed problems with a page that loops through a
lot of SQL records. From what I can tell from the profiler, it is the
security machinery that is at fault.
Workarounds I have used in this situation (eons ago) involved retrieving
the resultset in trusted code (inside a filesystem product or an
External Method) and converting it to a sequence of simple types, like a
sequence of dictionaries, before handing it back to the page template.
Those simple types don't cause security assertions and the rendering is
sped up immensely.
There seems to be a built in method - .dictionaries() that does exactly
this. Unfortunatley, neither it, nor a simple external method I wrote to
call my ZSQL methods seemed to help me.
Robert (Jamie) Munro
Zope maillist - Zope (AT) zope (DOT) org
** No cross posts or HTML encoding! **
(Related lists -
)