|using optimizing compiler technology to advance software engineering email@example.com (1989-10-30)|
|using optimizing compiler technology to advance software engineering firstname.lastname@example.org (Marshall Cline) (1989-11-15)|
|Re: using optimizing compiler technology to advance software engineeri email@example.com (1989-11-03)|
|Posted-Date:||30 Oct 89 21:42:54 GMT|
|From:||firstname.lastname@example.org (Paul C. Clements)|
|Keywords:||optimizing compilers, program performance, technology transfer|
|Date:||30 Oct 89 21:42:54 GMT|
|Organization:||U. Texas CS Dept., Austin, Texas|
Anyone who has ever tried to talk someone into using software engineering
techniques such as information-hiding modularization, structured programming,
or even just a high-level language, has probably encountered the objection,
"But I can't afford the performance penalty that will cause!"
Assuming that's correct -- which is often the case, because many systems
do have very tight memory and time constraints -- what do you say? Assume
that "Get a more powerful computer" is NOT a helpful response.
What we would LIKE to say is this: If you use "good" techniques (HLL,
structured programming, no global data or shared data structures, CSP's,
information-hiding modules, etc., etc.) THEN we can crank your source code
through an optimizing compiler to get a result that is as time- (space-)
efficient as is possible. Or, we will let you specify the time/space
efficiency mix that you need, and if a program exists that meets the semantics
and the constraints, our compiler will produce it. The executable code will
be efficient, but the source code (that people maintain) will be easy to
test and modify.
That's what we'd LIKE to say. My question for this group is: What
CAN we say? How much of the postulated "magic" optimizer exists? Can
exist? Might exist? For instance, are there any optimization techniques
that can examine the "liveness" of variables in order to fold them into
the same storage area, and thus minimize -- not just improve, but minimize --
the memory used for variable storage? This is a common trick of assembly
language programmers, but something that is not in general possible in a
system developed as a set of independent modules.
If there is interest, I will post a summary of responses (deadline = 11/5/89)
plus some theoretical results of which I'm already aware. Specific
citations will be greatly appreciated.
P. C. Clements
University of Texas at Austin
[Send your answers along to compilers if they're of general interest. I
suspect that specific experience would be more useful than generic flamage.
Return to the
Search the comp.compilers archives again.