From: Willy Tarreau <w@1wt.eu>
To: Segher Boessenkool <segher@kernel.crashing.org>
Cc: Benjamin LaHaise <bcrl@kvack.org>,
linux-kernel@vger.kernel.org,
Arjan van de Ven <arjan@infradead.org>,
Adrian Bunk <bunk@stusta.de>,
david@lang.hm, Oleg Verych <olecom@flower.upol.cz>,
rae l <crquan@gmail.com>
Subject: Re: -Os versus -O2
Date: Mon, 25 Jun 2007 10:19:05 +0200 [thread overview]
Message-ID: <20070625081905.GA15209@1wt.eu> (raw)
In-Reply-To: <e6d26e7ee86cc527095de2716f285aff@kernel.crashing.org>
On Mon, Jun 25, 2007 at 09:08:23AM +0200, Segher Boessenkool wrote:
> >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).
x86
> >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>
No, -Os is for size only :
-Os Optimize for size. -Os enables all -O2 optimizations
that do not typically increase code size. It also
performs further optimizations designed to reduce code
size.
So it is expected that speed can be reduced using -Os. I won't report
a thing which is already documented !
> >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.
Optimizing is not a matter of choosing *one* way, but cumulating
everything you have. For instance, on a smart boot loader, I have
a kernel which is about 300 kB, or 700 kB with the initramfs. Among
the tricks I used :
- -Os
- -march=i386
- align everything to 0
- replace gzip with p7zip
Even if each of them reduces overall size by 5%, the net result is
0.95^4 = 0.81 = 19% gain, for the same set of features. This is
something to consider.
Regards,
Willy
next prev parent reply other threads:[~2007-06-25 8:22 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-06-23 5:15 [PATCH] trivial: the memset operation on a automatic array variable should be optimized out by data initialization Denis Cheng
2007-06-23 7:59 ` Oleg Verych
2007-06-23 13:13 ` Adrian Bunk
2007-06-23 13:41 ` Oleg Verych
2007-06-23 13:57 ` Adrian Bunk
2007-06-23 15:21 ` Segher Boessenkool
2007-06-24 12:58 ` rae l
2007-06-24 22:25 ` Oleg Verych
2007-06-24 22:15 ` Arjan van de Ven
2007-06-24 23:23 ` Benjamin LaHaise
2007-06-25 0:09 ` Arjan van de Ven
2007-06-25 0:12 ` Benjamin LaHaise
2007-06-25 0:23 ` Arjan van de Ven
2007-06-25 0:41 ` -Os versus -O2 Adrian Bunk
2007-06-25 0:58 ` Arjan van de Ven
2007-06-25 1:08 ` david
2007-06-25 1:17 ` Arjan van de Ven
2007-06-25 1:33 ` david
2007-06-25 1:41 ` Rene Herman
2007-06-25 5:04 ` Willy Tarreau
2007-06-25 7:08 ` Segher Boessenkool
2007-06-25 7:15 ` david
2007-06-25 7:41 ` Segher Boessenkool
2007-06-25 8:19 ` Willy Tarreau [this message]
2007-06-25 8:41 ` Segher Boessenkool
2007-06-25 7:03 ` Segher Boessenkool
2007-06-25 7:13 ` david
2007-06-25 7:35 ` Segher Boessenkool
2007-06-25 1:33 ` Adrian Bunk
2007-06-25 1:23 ` Rene Herman
2007-06-25 1:31 ` Rene Herman
2007-06-25 1:34 ` Jeff Garzik
2007-06-25 1:46 ` Adrian Bunk
2007-06-25 2:19 ` david
2007-06-24 23:33 ` memset() with zeroes (Re: [PATCH] trivial: the memset operation on a automatic array variable should be optimized out by data initialization) Oleg Verych
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070625081905.GA15209@1wt.eu \
--to=w@1wt.eu \
--cc=arjan@infradead.org \
--cc=bcrl@kvack.org \
--cc=bunk@stusta.de \
--cc=crquan@gmail.com \
--cc=david@lang.hm \
--cc=linux-kernel@vger.kernel.org \
--cc=olecom@flower.upol.cz \
--cc=segher@kernel.crashing.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox