Subject: Re: [xsl] Performance of xsl:for-each with key() lookup From: "Wendell Piez wapiez@xxxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 26 Sep 2018 21:50:42 -0000 |
Hey Alan, check out version 4, I'm sure Mike Kay doesn't remember the details of that one either -- https://markmail.org/message/bapqkmmd7bz2fxce Probably wasn't providing late variable binding. Still giving great value! So far we have come! Cheers, Wendell On Wed, Sep 26, 2018 at 5:01 PM Alan Painter alan.painter@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > 10 years old and still giving great value. > > On Wed, Sep 26, 2018, 22:54 Michael Kay mike@xxxxxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: >> >> 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 >> > >> > XSL-List info and archive > EasyUnsubscribe (by email) -- Wendell Piez | http://www.wendellpiez.com XML | XSLT | electronic publishing Eat Your Vegetables _____oo_________o_o___ooooo____ooooooo_^
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Performance of xsl:for-ea, Alan Painter alan.pa | Thread | Re: [xsl] Performance of xsl:for-ea, Michael Kay mike@xxx |
Re: [xsl] Performance of xsl:for-ea, Alan Painter alan.pa | Date | Re: [xsl] Performance of xsl:for-ea, Michael Kay mike@xxx |
Month |