Compile time and effectiveness of optimizers
Steven Bosscher
s.bosscher@student.tudelft.nl
Wed Feb 12 18:47:00 GMT 2003
The compile time discussions so far were mostly about data structures
and garbage collection, and almost not at all about the different passes
and their effectiveness.
In the ast-optimizer project, one of the goals was to provide a testing
framework. "Without a test framework, we will have no information about
the effectiveness and stability of optimizers."
(http://gcc.gnu.org/projects/ast-optimizer.html)
Such a framework does not seem to be available for RTL optimizers.
Right now it is not really easy to determine the effect and efficiency
of the RTL optimizers. Try to gather per-pass memory statistics, it's
not easy; so it's difficult to tell where garbage is being created and
why. We do have the per-pass timings but they don't tell you anything
about how that time was used. Comparing RTL dumps is not really a great
hobby of anyone either, I suppose.
Maybe it would be interesting to investigate the possibilities for a
minimal testing framework. Trivial things could be measured, such as:
- how many times an optimizer actually was applied.
- per-pass memory statistics, first per whole pass,
maybe dig a little deeper later on.
- interaction between the optimizers (e.g. if, say,
ccp doesn't do more than N optimizations, don't do
jump optimization, etc.)
Such a framework could be enabled with a configure switch, or by in the
development branch or. Parts of this work would overlap with the
toplev.c overhaul.
Comments?
Greetz
Steven
More information about the Gcc
mailing list