RE: XSLT 2.0 function - fastest node comparison
> > 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
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