On 7/22/07, Michael Kay <mike(_at_)saxonica(_dot_)com> wrote:
> For example, to return a sequence of all items but the last [sic: first],
> which of the following is better?
>
> $x[ position() > 1 ]
>
> or
>
> remove( $x , 1 )
>
It's impossible to say in general, it's processor-dependent. Saxon compiles
both of these into exactly the same code, effectively an expression
tail($x). This construct is specially recognized at run-time to avoid
copying the sequence unnecessarily.
Use saxon:explain="yes" if you're interested in details of how Saxon has
compiled the code.
For some anecdotal evidence, when I had this exact requirement for the
Sudoku Solver [1] and switched from $seq[position() > 1] to
subsequence($seq, 2) the performance increase was significant.
The change was made in some heavily used parts of the stylesheet and
although I never benchmarked the difference it was significant enough
to stick in my mind - around say 10 seconds on a transform that was
taking ~50 seconds at the time. (which now takes around ~1.5secs in
the latest version :-)
[1] http://andrewjwelch.com/code/xslt/sudoku/sudoku-solver.html
--
http://andrewjwelch.com
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--