Subject: Re: [xsl] Efficiency: predicate vs function From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx> Date: Mon, 23 Jul 2007 09:54:03 +0100 |
> 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 :-)
-- http://andrewjwelch.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Efficiency: predicate vs, Michael Kay | Thread | RE: [xsl] Efficiency: predicate vs , Michael Kay |
RE: [xsl] The generic numeric datat, Michael Kay | Date | RE: [xsl] Efficiency: predicate vs , Michael Kay |
Month |