comp.lang.ada
 help / color / mirror / Atom feed
From: arizona.edu!zippy.telcom.arizona.edu!basix.com!rharwood@arizona.edu  (Ray Harwood -- Data Basix: (602)721-1988)
Subject: Re: and then
Date: 7 Apr 93 21:07:00 GMT	[thread overview]
Message-ID: <7APR199314073871@basix.com> (raw)

In article <19930406.143008.278@almaden.ibm.com>, jnestoriak@vnet.IBM.COM
writes...
>At a recent code inspection, someone suggested that I convert a
>series of and's to and then's "for performance".  I expect that
>90+% of the time all the conditions will be true anyway.  But is
>it really true that and then will get better performance than
>and?  I realize this is probably a compiler dependant question.
>Also, I question the value of doing such a thing styllistically.
>Any opinions?

There is certainly nothing "wrong" with the short ciruit forms... please note
this discussion applies to both AND THEN and OR ELSE.  Indeed, as a contractor
of Ada software testing, I try to convince my clients that short circuit forms
should ALWAYS be used, unless there is a compelling reason to REQUIRE the
evaluation of each and every boolean term in an expression!  

My suggestion:  *Always* put the most commonly FALSE term at the BEGINNING of a
string of AND THENs, and continue in decreasing order of frequency.  That way
as soon as the code runs across a FALSE term, the entire expression is declared
FALSE and the appropriate action taken without further needless evaluation. 
This is PARTICULARLY efficient if there are multiple FUNCTION calls in the
boolean expression; saving the overhead of just a few calls (especially, for
example, in a loop) is well worth the "headache" of typing a few more
characters.

For OR ELSE, put the most commonly TRUE term at the beginning.  That way, as
soon as the compiler runs across a TRUE term, the entire expression is delcared
TRUE and appropriated action taken.  Note:  There is no "short circuit" form
for XOR... you just can't decide the outcome of an XOR without evaluating both
parts!

Ray
-----
Ray Harwood          | Data Basix              | Adjunct Faculty, East Campus, 
Voice: (602)721-1988 | PO Box 18324            |     Pima Community College
FAX:   (602)721-7240 | Tucson, AZ 85731        | Instructor in Ada and Pascal
           Internet: | rharwood@Data.Basix.COM | rharwood@east.pima.edu
** For info on Data Basix, send EMail with no subject to Info@Data.Basix.COM **

             reply	other threads:[~1993-04-07 21:07 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-04-07 21:07 Ray Harwood -- Data Basix: (602)721-1988 [this message]
  -- strict thread matches above, loose matches on Subject: below --
1993-04-12 18:38 and then Charles H. Sampson
1993-04-12 13:29 cis.ohio-state.edu!zaphod.mps.ohio-state.edu!howland.reston.ans.net!noc.n
1993-04-11  3:55 Michael Feldman
1993-04-10 19:52 Alex Blakemore
1993-04-10 15:43 Dik T. Winter
1993-04-10 15:36 Dik T. Winter
1993-04-10  9:39 munnari.oz.au!yoyo.aarnet.edu.au!news.adelaide.edu.au!usenet
1993-04-10  1:03 Charles H. Sampson
1993-04-09 18:08 Dave Bashford
1993-04-09 14:06 Dan Rittersdorf
1993-04-08 22:35 Andrew Dunstan,,2285592,
1993-04-08 22:28 Alex Blakemore
1993-04-08 19:03 Art Duncan
1993-04-08 16:18 Charles H. Sampson
1993-04-08 15:34 Christopher J. Henrich
1993-04-08 12:21 enterpoop.mit.edu!usc!cs.utexas.edu!mars.tsd.arlut.utexas.edu!gardner
1993-04-07 22:58 Mark Lundquist
1993-04-07 16:21 Charles H. Sampson
1993-04-07 12:42 Robert Firth
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox