[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Efficiency: predicate vs function

Subject: Re: Efficiency: predicate vs function
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Mon, 23 Jul 2007 09:54:03 +0100
Re:  Efficiency: predicate vs function
On 7/22/07, Michael Kay <mike@xxxxxxxxxxxx> 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

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.