RE: [xsl] [XSLT] [Q] Recursion Question/Concern

Subject: RE: [xsl] [XSLT] [Q] Recursion Question/Concern
From: "Michael Kay" <mhkay@xxxxxxxxxxxx>
Date: Thu, 22 Mar 2001 03:42:32 -0000
> I need to count and number "records" in an XML file.
> It would seem that recursion is the answer, but I am
> concerned about performance.

You have already had responses showing you how to do this without recursion.
>
> When using recursion I have noticed a 10:1 performance
> decrease over not using recursion.  I assume that user
> error is responsible.
>
> In my XSL document I do the following:
>
> <xsl:template name="NumberStuff">
>   <xsl:param name="Counter" />
>
>   <xsl:if test="count(//RECORD) + 1 > $Counter">
>
The performance problem is not because your stylesheet is recursive, it is
because each time this template is called it is calculating count(//RECORD),
the number of RECORD elements in the document, which is an expensive
operation. A good optimizer would avoid doing it repeatedly, but this is
more difficult than you might think, because it has to reckon with the
possibility of multiple source documents, which would cause count(//RECORD)
to give different answers on different occasions. You could get a massive
performance boost by calculating count(//RECORD) in a global variable.

Mike Kay
Software AG


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread