[xsl] ($possibly-empty, $default)[1] idiom optimisation

Subject: [xsl] ($possibly-empty, $default)[1] idiom optimisation
From: Andrew Welch <andrew.j.welch@xxxxxxxxx>
Date: Wed, 24 Mar 2010 10:21:22 +0000
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