[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Performance of xsl:for-each with key() lookup
The answer obviously depends on the processor. With Saxon, if a variable is only referenced once, and the reference isn't in a loop, then it will be inlined. So if you write > <xsl:variable name="elems" select="key('some', $value, $doc)" > as="element()*"/> > <xsl:for-each select="$elems"> then Saxon will rewrite it as > <xsl:for-each select="key('some', $value, $doc)"> The main benefit of this rewrite is better pipelining. A variable causes the list of items to be stored somewhere in memory; without the variable, each item is processed as soon as it is found. Michael Kay Saxonica PS: Saxon 9.1 is about 10 years ago, so my memory of it is rather rusty. > On 26 Sep 2018, at 21:40, Martynas JuseviD ius martynas@xxxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > Hi, > > I'm using the following pattern in multiple places in my stylesheets: > > <xsl:for-each select="key('some', $value, $doc)"> > > My question is, would iteration be optimized if I selected the nodes > into a variable first? > > <xsl:variable name="elems" select="key('some', $value, $doc)" > as="element()*"/> > <xsl:for-each select="$elems"> > > I guess it should be faster if the key() function is called only once > instead of multiple times? But if there is an index maybe it doesn't > matter? > > And does the same apply to > > <xsl:apply-templates select="key('some', $value, $doc)"/> > > as well? > > I'm using Saxon 9.1.0.8. > > > Martynas
|
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
|