Jens Vagelpohl wrote:
> On 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@zope.org
** No cross posts or HTML encoding! **
(Related lists -