Subject: RE: [xsl] A question on optimization From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 3 Nov 2004 11:10:34 -0000 |
Optimization and performance depend on the processor. As it happens, with Saxon, if you use "//x" inside a loop then Saxon will remember the value and avoid re-evaluating it each time, while if you use /*/x, it won't. The moral is, don't guess - measure! Putting the value in a variable that's set outside the loop, whatever the expression used, is almost certainly not going to make performance any worse. I don't think there's likely to be any significant difference between using a single-valued key, as shown here, and using a global variable. Using a global variable seems much more intuitive. But here I'm guessing. Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Geert Josten [mailto:Geert.Josten@xxxxxxxxxxx] > Sent: 03 November 2004 08:57 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] A question on optimization > > Hi Jochen, > > > <xsl:for-each select="//justus:choice"> > > <xsl:element name="TR"> > > <xsl:variable name="current" select="."/> > > <xsl:for-each select="//justus:part[@visible='true']"> > > <xsl:variable name="dbfeld" select="."/> > > <xsl:element name="td"> > > <xsl:for-each > > select="$current/@*[name()=$dbfeld/@dbfeld]"> > > <xsl:value-of select="."/> > > </xsl:for-each> > > </xsl:element> > > </xsl:for-each> > > </xsl:element> > > </xsl:for-each> > > ... > > > <xsl:for-each select="//justus:choice"> > > <xsl:element name="tr"> > > <xsl:element name="td"><xsl:value-of > select="a1"/></xsl:element> > > <xsl:element name="td"><xsl:value-of > select="a2"/></xsl:element> > > ... > > </xsl:element> > > </xsl:for-each> > > David is right. Using // is rather expensive in terms of > performance. Use full paths as David > suggests, or try using keys if the choice and part elements > may occur in unpredictable locations: > > <xsl:key name="choices" match="justus:choice" use="'all'" /> > <xsl:key name="parts" match="justus:part" use="'all'" /> > > <xsl:for-each select="key('choices', 'all')"> > > and > > <xsl:for-each select="key('parts', 'all')[@visible='true']"> > > Grtz, > Geert
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] A question on optimizatio, Geert Josten | Thread | Re: [xsl] A question on optimizatio, Geert Josten |
RE: [xsl] Using normalize-space to , Andrew Welch | Date | Re: [xsl] A question on optimizatio, Geert Josten |
Month |