[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: XPath perfomance in attributes or nodes?
Subject: Re: XPath perfomance in attributes or nodes?
From: Hans Huber <hans.huber@xxxxxxxx>
Date: Mon, 11 Mar 2002 16:00:54 +0100
|
Hi,
I have read of your discussion about performance of different ways to
achieve the same result with xslt.
If you are interested in the treshold above which the use of a key()
function would improve performance it is very helpful to check your
transformation by means of a profiler.
We have developed such a tool and it is available for free on the web
site http://www.xslprofiler.org
I hope this may be useful for you.
Cheers,
Hans.
Jonathan Perret wrote:
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: 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
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format
RSS 2.0 |
|
Atom 0.3 |
|
|