[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] XPath perfomance in attributes or nodes?


Subject: Re: [xsl] XPath perfomance in attributes or nodes?
From: "Jonathan Perret" <jonathan@xxxxxxxxxxxx>
Date: Thu, 7 Mar 2002 10:45:18 +0100

I would like to ask the XSLT implementors on this list whether their
processors build keys lazily (i.e. on the first use of the key() function),
or does <xsl:key> have a cost even when the key is not used later ?
When is the cost of building the index offset by the performance gain ?

For example, suppose the input is 10000 elements like so :

<doc>
<elt att="1">
</elt>
<elt att="2">
</elt>
<elt att="3">
</elt>
...
</doc>

and there is an external parameter that gives the stylesheet
an attribute value to look for. Which would be faster :

<xsl:key name="idx" match="elt" use="@att" />
<xsl:param name="param" />

<xsl:template ...>
    ...
    <xsl:apply-templates select="key('idx',$param)" />
    ...
</xsl:template>

Or : 

<xsl:param name="param" />

<xsl:template ...>
    ...
    <xsl:apply-templates select="/doc/elt[@att=$param]" />
    ...
</xsl:template>

Assuming the <xsl:apply-templates> above is executed
only once, it seems to me that the key-less version
should perform a bit faster. But as I have never implemented
an XSLT processor I would like to have the opinion of
masters of the subject.

Cheers,
--Jonathan

----- Original Message ----- 
From: "Peter Davis" <pdavis152@xxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Thursday, March 07, 2002 3:52 AM
Subject: Re: [xsl] XPath perfomance in attributes or nodes?


> <xsl:key name="project-uid" match="project" use="@uid"/>
> <!-- or use="uid" -->
> <xsl:template ...>
>   <xsl:apply-templates select="key('project-uid',
>      '{6A97F258-93A7-4C5E-B712-052130A5208C}')[1]"/>
>   <!-- [1] is probably not necessary -->
> </xsl:template>
> 
> will be much faster than either approach.
> 



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



Current Thread
Keywords