RE: [xsl] XSLT 2.0 function - fastest node comparison

Subject: RE: [xsl] XSLT 2.0 function - fastest node comparison
From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx>
Date: Thu, 10 Mar 2005 17:17:50 -0000
> > Interestingly, using 'cast as' on $middle to narrow it to
> an integer
> > causes the execution time to increase by 250ms, so I've
> left them all
> > as doubles (the positional predicate in $currentNode doesn't
> > appear to mind
> > using a double).
>
> That makes me realise that it would actually avoid many
> string->number conversions if you extracted the ranges as two
> sequences of integers in global variables:
>
> <xsl:variable name="lows" select="$ranges/*/@from/xs:integer(.)"
> as="xs:integer*"/>
> <xsl:variable name="highs" select="$ranges/*/@to/xs:integer(.)"
> as="xs:integer*"/>
> <xsl:variable name="n" select="count($lows)" as="xs:integer"/>
>
> test="some $i in 1 to $n satisfies ($highs[$i] ge $test and
> $lows[$i] le $test)"


That's much better still:

Old Way 	New Way
932ms		772ms
931ms		771ms
952ms		781ms
941ms		771ms
931ms		781ms

Thanks Mike, always nice to use the 'satisfies' keyword...

cheers
andrew

Current Thread