|
Subject: Re: [xsl] Performance of xsl:for-each with key() lookup From: "Alan Painter alan.painter@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 26 Sep 2018 21:00:47 -0000 |
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
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Performance of xsl:for-ea, Michael Kay mike@xxx | Thread | Re: [xsl] Performance of xsl:for-ea, Wendell Piez wapiez@ |
| Re: [xsl] Performance of xsl:for-ea, Michael Kay mike@xxx | Date | Re: [xsl] Performance of xsl:for-ea, Wendell Piez wapiez@ |
| Month |