Re: -Os versus -O2

Segher Boessenkool
2007-06-25T07:08:38Z

> In my experience, -Os produced faster code on gcc-2.95 than -O2 or -O3.

On what CPU? The effect of different optimisations varies
hugely between different CPUs (and architectures).

> It was not only because of cache considerations, but because gcc used
> different tricks to avoid poor optimizations, and at the end, the CPU
> ended executing the alternative code faster.

-Os is "as fast as you can without bloating the code size",
so that is the expected result for CPUs that don't need
special hand-holding around certain performance pitfalls.

> With gcc-3.3, -Os show roughly the same performance as -O2 for me on
> various programs. However, with gcc-3.4, I noticed a slow down with
> -Os. And with gcc-4, using -Os optimizes only for size, even if the
> output code is slow as hell. I've had programs whose speed dropped
> by 70% using -Os on gcc-4.

Well you better report those! <http://gcc.gnu.org/bugzilla>

> But in some situtations, it's desirable to have the smallest possible
> kernel whatever its performance. This goes for installation CDs for
> instance.

There are much better ways to achieve that.

Segher