Subject: ($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/
|