From: sampson@cod.nosc.mil (Charles H. Sampson)
Subject: Re: and then
Date: 12 Apr 93 18:38:06 GMT [thread overview]
Message-ID: <1993Apr12.183806.1003@nosc.mil> (raw)
In article <1q3vtq$2lt@travis.csd.harris.com> danr@ada1.ssd.csd.harris.com (Dan
Rittersdorf) writes:
>In article <1993Apr7.162133.3564@nosc.mil> sampson@nosc.mil (me) writes:
>>
>> Unfortunately, that style can conflict with efficiency considerations.
>>Ada compiler writers appear to have abdicated their responsibility and make
>>no attempt to determine when boolean operations can be optimized as short-
>>circuit. (Somebody contradict me, please.) They apparently feel that if
>>the programmer wants short-circuit he can ask for it. In addition, there
>>are cases when it is unreasonable to expect such an optimization; when the
>>second operand contains a function reference, for example.
>
> Some vendors, especially those that have concentrated on excellent
> optimization, like (blatant plug alert) Harris, do make this
> optimization when it can be determined that the operands of
> the boolean operator have no side effects. Someone else also stated
> that the LRM requires the evaluation of the operands, but I think
> several people have done a good job of arguing that one to the
> ground, so I won't.
>
> I find it odd, though, that you feel a vendor has some *responsibility*
> to provide this optimization. Each possible optimization has a cost and
> a benefit -- to the vendor and the user, and each vendor decides what
> optimizations they can afford to provide, given the benefit (profit)
> that can be obtained. That's business. If a vendor decides that benefits
> of providing short circuit boolean optimizations don't outweigh their
> investment, they may well decide not to provide it. They have no
> responsibility to provide it -- just the option. If you want it,
> let your vendor know. They can't know what the customer wants if the
> customer doesn't tell them. If they're unresponsive, remember that
> they still have to weigh the benefit to their entire user community
> against the cost to the same. Sometimes one user's request can't be
> granted if the impact to the entire user community would be deemed
> too great (for example, if the requested optimization were to require
> adding a new, time consuming pass to the compiler which would increase
> everybody's compile times).
These are all good points and I find it difficult to argue with them.
I will explain a bit what I meant by "abdicating responsibility".
In the pre-Ada world, not so long ago, evaluating boolean expressions
in short-circuit form was so common that I doubt that many compiler writers
considered it to be an optimization. I certainly didn't for the compiler I
worked on. It was just considered code generation, in roughly the same bag
of tricks as a decent register assignment algorithm. In the FORTRAN world,
short-circuit was common but not universal, which had interesting impact on
FORTRAN's vaunted transportability.
Then along came Ada, which specified precisely the semantics of bool-
ean expressions. As I have looked at code from a number of Ada compilers
and not seen any short-circuit, I leaped to the conclusion that the imple-
menter were saying something like, "Heck, it's easy to do short-circuit,
but first we have to verify that we're not changing the semantics. Forget
it. If the programmer wants short-circuit he can ask for it." I consider
it a "responsibility" of Ada compiler writers to generate code roughly as
good as the code for similar constructs in other languages, provided the
LRM doesn't prevent it, therefore roughly as good as a FORTRAN compiler.
Certainly that "responsibility" is not a moral imperative; it's tempered by
all of the considerations stated by Mr. Rittersdorf.
I'm happy to report that a number of implementors have responded to my
request to be contradicted. Apparently many have now decided to do the
extra work required to implement this "optimization".
Charlie
next reply other threads:[~1993-04-12 18:38 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
1993-04-12 18:38 Charles H. Sampson [this message]
-- strict thread matches above, loose matches on Subject: below --
1993-04-12 13:29 and then 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 21:07 Ray Harwood -- Data Basix: (602)721-1988
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