comp.lang.ada
 help / color / mirror / Atom feed
From: albaugh@agames.com (Mike Albaugh)
Subject: Re: Compiler Optimisation?
Date: 1998/12/13
Date: 1998-12-13T00:00:00+00:00	[thread overview]
Message-ID: <98-12-025@comp.compilers> (raw)
In-Reply-To: 98-12-020@comp.compilers

Thomas W. Christopher (tc@charlie.cns.iit.edu) wrote:
: How much faster does optimized code run for different optimizations?

: I believe Daniel Bidwell ( http://www2.andrews.edu/~bidwell/ ) worked
: on that question in his PhD dissertation, as well as how much do the
: optimizations cost.

: As I recall, he found that "folding," performing constant arithmetic at
: compile time, not only makes the compiled code run faster, but also the
: compiler.

	Perennial grump here. :-) In at least one case (gcc from at
least 1.31 to when I stopped bothering to look, 2.mumble) "folds"
structure member accesses inapropriately, so that "letting a function
know" what the value of a structure pointer is can produce much worse
code.  I would expect that if they don't fix this and start in-lining
really aggressively, code performance could deteriorate unexpectedly
as the inliner "gets smarter" and enlarges the scope of "knowledge".

	In case I have been too terse, what I'm talking about is:

static struct foo {
	int a;
	int b;
	int c;
} myfoo;

int foosum() {

	struct foo *myfp = &myfoo;

	return myfp->a + myfp->b + myfp->c;
}

gcc (often) generates code as if that last line was:

	return myfoo.a + myfoo.b + myfoo.c;

(or more pedantically, as if the whole expression was "flattened" into
a nasty mess of casts to int pointers with constant offsets)

	In the _best_ case, this simply turns a pointer-load and three
(base+disp) instructions into three 32-bit-address instructions.  On
some machines, it gets even worse. In theory, the compiler _could_
recognize the common expression and re-generate the pointer form, but
a) it apparently doesn't and b) to do so would take time, so the
folding, at least in this case, would not be making the compiler
itself faster.

	Not to say that "folding is bad", but rather "Optimizations
can interact, there is no free lunch" :-)
						Mike
| albaugh@agames.com, speaking only for myself




  reply	other threads:[~1998-12-13  0:00 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1998-12-06  0:00 Compiler Optimisation? Iain Bate
1998-12-07  0:00 ` Marin David Condic
1998-12-10  0:00 ` Thomas W. Christopher
1998-12-13  0:00   ` Mike Albaugh [this message]
1998-12-13  0:00   ` John F Carr
1998-12-10  0:00 ` Ray Dillinger
1998-12-13  0:00   ` dewarr
1998-12-18  0:00     ` Ray Dillinger
1998-12-18  0:00     ` Stefan Monnier
1998-12-13  0:00 ` Andy Gaynor
replies disabled

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