Subject: RE: [xsl] ($possibly-empty, $default)[1] idiom optimisation From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 24 Mar 2010 10:32:29 -0000 |
I think it's reasonable to assume that a half-decent processor, given an expression like (EXP)[1] will stop evaluating the sequence EXP after the first item has been found. So with ($possibly-empty, $default)[1] the value of $default won't be computed unless it's needed. Of course there might be other optimizations that interfere and cause the evaluation to be done eagerly: for example in the case of (//equation)[1] Saxon will actually build an index of all the equations in the document so that subsequent evaluations of (//equation) are faster. Regards, Michael Kay http://www.saxonica.com/ http://twitter.com/michaelhkay > -----Original Message----- > From: Andrew Welch [mailto:andrew.j.welch@xxxxxxxxx] > Sent: 24 March 2010 10:21 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] ($possibly-empty, $default)[1] idiom optimisation > > Hi, > > This is often used as a nice way to avoid an if-then-else > check to display $default if $possibly-empty is empty: > > ($possibly-empty, $default)[1] > > Out of interest, is it likely to be optimised to avoid > evaluating $default if the first item is not empty, because > if $default takes a reasonable amount of work to evaluate > it's effectively wasted most of the time (if $default is > rare). If it takes more work to evaluate $default than to > test whether $possibly-empty is empty each time, then this is > just a short cut rather than good practice. > > It reminds me of advice I heard (for Java) to wrap all log > statements in an if test to check the log level first to > avoid the unnecessary creation of the log message. For > example, constructing a large message for a debug log by > combining several different things, only for the constructed > string to be discarded because the log level is info. > (testing the log level a 1000 times is far better than > creating and discarding 1000 strings) > > > -- > Andrew Welch > http://andrewjwelch.com > Kernow: http://kernowforsaxon.sf.net/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] ($possibly-empty, $default)[1, Andrew Welch | Thread | [xsl] Good or Bad should XSL valida, Dan Vint |
Re: [xsl] Difference between <when>, Bill Michell | Date | Re: [xsl] Display more than one tab, Martin Honnen |
Month |