This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Re:Re: How to improve the performance where a key element used in multiple documents's


Hi Sun-fu,

> You specially suggest me to consider using predicates such as:
>
> <xsl:variable name="MSource" select="$originalDoc/z:row"/>
>   <xsl:apply-templates select="$MSource[@OrderNo = $thisNo]"
>                        mode="transDtl" />
>
> instead of using key element,
>
>     <xsl:for-each select="$originalDoc">
>       <xsl:apply-templates select="key('TransNo',$thisNo)"
>                            mode="transDtl"/>
>     </xsl:for-each>
>
> As matter of fact I have tried using predicates, however its
> performance is much slower compared with that of using key table. So
> I decide keep on using key function.

Cool - you're absolutely right to test whether any sweeping statements
about efficiency has a real effect in your particular case.

I think the reason that you're getting such a marked increase in speed
with the key is because in the code as you've given above, you're
using it in a very worthwhile way. I was specifically talking about
using a key *where the key was only used once on a particular
document*. The case that I discussed was where you were using a key on
an RTF that had just been created - you were creating several new RTFs
(one for each OrderNo) and then using a key on each of them just once.

In the case that you show above, on the other hand, you're using the
key on $originalDoc. Here, the key is also used on $originalDoc prior
to that, when you generate the $TransNoheading variable (set of unique
z:row elements). And the key is also used multiple times within the
xsl:for-each that's iterating over the OrderNos. So there, you're
using a key on the same document *multiple* times - it's not
surprising you get a marked increase in speed.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]