From: Bryan Andersen <bryan@bogonomicon.net>
To: linux-kernel <linux-kernel@vger.kernel.org>
Cc: vda@port.imtp.ilyichevsk.odessa.ua, root@chaos.analogic.com,
"Martin J. Bligh" <mbligh@aracnet.com>,
lse-tech <lse-tech@lists.sourceforge.net>
Subject: Re: gcc 2.95 vs 3.21 performance
Date: Tue, 04 Feb 2003 03:54:46 -0600 [thread overview]
Message-ID: <3E3F8DE6.708@bogonomicon.net> (raw)
In-Reply-To: 200302040656.h146uJs10531@Port.imtp.ilyichevsk.odessa.ua
Personal opinion here but I know it is also held by many developers I
know and work with. I'd rather have a compiler that produces correct
and fast code but ran slow than one that produces slow or bad code and
runs fast. Remember compilation is done far less often than run time
execution. Yes I too noticed a difference when I switched over to 3.2
but I also noticed some of my code speed up.
>>>People keep extolling the virtues of gcc 3.2 to me, which I'm
>>>reluctant to switch to, since it compiles so much slower. But
>>>it supposedly generates better code, so I thought I'd compile
>>>the kernel with both and compare the results. This is gcc 2.95
>>>and 3.2.1 from debian unstable on a 16-way NUMA-Q. The kernbench
>>>tests still use 2.95 for the compile-time stuff.
>>
>>[SNIPPED tests...]
>
>
> What was the size of uncompressed kernel binaries?
> This is a simple (and somewhat inaccurate) measure of compiler
> improvement ;)
While I too like smaller tighter output code, I'd trade it for code that
runs faster in real world situations. As an example identifying the
most likely execution path through a routine and keeping it contiguous
in memory will do more for average execution speed than optimizing to
use the smallest number of bytes. If the compiler could tell which
blocks of code are for handling exceptions it then can place them ouside
of the main execution path. This makes the normal code execution path
smaller and more compact. In doing so it also reduces the number of
memory fetch operations and cache space needed to run the code. With
cache misses being 100+ clock cycles and page faults well into the
millions, keeping that normal execution path short means alot.
>>Don't let this get out, but egcs-2.91.66 compiled FFT code
>>works about 50 percent of the speed of whatever M$ uses for
>>Visual C++ Version 6.0 I was awfully disheartened when I
>
> Yes. M$ (and some other compilers) beat GCC badly.
But can M$'s compiler produce code for many radically different CPU
architectures? Most people only work with gcc on one type of CPU so
they never think about just how flexible and good GCC really is. I see
it often compaired against compilers that are dedicated to a single CPU
where the development team only has to worry about one CPU type. GCC's
development team needs to worry about many different arcitectures. Some
are radically different in their fundamental structure. This really
complicates the job of producing a compiler that works correctly.
- Bryan
next prev parent reply other threads:[~2003-02-04 9:45 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-02-03 23:05 gcc 2.95 vs 3.21 performance Martin J. Bligh
2003-02-03 23:22 ` [Lse-tech] " Andi Kleen
2003-02-03 23:31 ` Richard B. Johnson
2003-02-04 0:43 ` J.A. Magallon
2003-02-04 13:42 ` Richard B. Johnson
2003-02-04 14:20 ` John Bradford
2003-02-04 6:54 ` Denis Vlasenko
2003-02-04 7:13 ` Martin J. Bligh
2003-02-04 12:25 ` Adrian Bunk
2003-02-04 15:51 ` Martin J. Bligh
2003-02-04 16:27 ` [Lse-tech] " Martin J. Bligh
2003-02-04 17:40 ` Patrick Mansfield
2003-02-04 17:55 ` Martin J. Bligh
2003-02-04 9:54 ` Bryan Andersen [this message]
2003-02-04 15:46 ` Martin J. Bligh
2003-02-04 19:09 ` Timothy D. Witham
2003-02-04 19:35 ` John Bradford
2003-02-04 19:44 ` Dave Jones
2003-02-04 20:11 ` John Bradford
2003-02-04 20:20 ` John Bradford
2003-02-04 20:45 ` Herman Oosthuysen
2003-02-04 21:44 ` Timothy D. Witham
2003-02-05 7:15 ` Denis Vlasenko
2003-02-05 10:36 ` Andreas Schwab
2003-02-05 11:41 ` Denis Vlasenko
2003-02-05 12:20 ` Dave Jones
2003-02-05 13:10 ` [Lse-tech] " Dipankar Sarma
2003-02-05 15:30 ` Martin J. Bligh
2003-02-04 21:38 ` Linus Torvalds
2003-02-04 21:54 ` John Bradford
2003-02-04 22:11 ` Linus Torvalds
2003-02-04 23:27 ` Timothy D. Witham
2003-02-04 23:21 ` Larry McVoy
2003-02-04 23:42 ` b_adlakha
2003-02-05 0:19 ` Andy Pfiffer
2003-02-04 23:51 ` Jakob Oestergaard
2003-02-05 1:03 ` Hugo Mills
2003-02-10 22:26 ` Andrea Arcangeli
2003-02-10 23:28 ` J.A. Magallon
2003-02-04 23:51 ` Eli Carter
2003-02-05 0:27 ` Larry McVoy
2003-02-06 20:42 ` Paul Jakma
2003-02-05 3:03 ` Tomas Szepe
2003-02-05 6:03 ` Mark Mielke
2003-02-07 16:09 ` Pavel Machek
2003-02-04 10:57 ` Padraig
2003-02-04 13:11 ` Helge Hafting
2003-02-04 13:29 ` Jörn Engel
2003-02-04 14:05 ` P
2003-02-04 20:36 ` Herman Oosthuysen
2003-02-04 12:20 ` [Lse-tech] " Dave Jones
2003-02-04 15:50 ` Martin J. Bligh
2003-02-10 12:13 ` Momchil Velikov
2003-02-06 15:42 ` gcc -O2 vs gcc -Os performance Martin J. Bligh
2003-02-06 15:51 ` [Lse-tech] " Andi Kleen
2003-02-06 17:48 ` Alan Cox
2003-02-06 17:06 ` Martin J. Bligh
2003-02-06 20:38 ` Martin J. Bligh
2003-02-06 21:32 ` John Bradford
2003-02-06 22:12 ` Linus Torvalds
2003-02-06 22:58 ` Martin J. Bligh
2003-02-06 23:16 ` Linus Torvalds
2003-02-06 23:59 ` Martin J. Bligh
2003-02-06 23:17 ` Roger Larsson
2003-02-06 23:33 ` Martin J. Bligh
[not found] <1044385759.1861.46.camel@localhost.localdomain.suse.lists.linux.kernel>
[not found] ` <200302041935.h14JZ69G002675@darkstar.example.net.suse.lists.linux.kernel>
[not found] ` <b1pbt8$2ll$1@penguin.transmeta.com.suse.lists.linux.kernel>
2003-02-04 22:05 ` gcc 2.95 vs 3.21 performance Andi Kleen
2003-02-04 22:14 ` Linus Torvalds
2003-02-05 10:04 ` Pavel Janík
2003-02-05 20:07 ` Linus Torvalds
2003-02-06 15:00 ` Horst von Brand
2003-02-04 22:59 ` Jeff Muizelaar
2003-02-04 23:12 ` b_adlakha
2003-02-05 8:41 ` Horst von Brand
2003-02-05 19:09 ` Linus Torvalds
2003-02-05 19:22 ` Randy.Dunlap
2003-02-05 19:24 ` John Bradford
2003-02-06 7:02 ` Neil Booth
[not found] ` <courier.3E423112.00007219@softhome.net>
[not found] ` <20030206212218.GA4891@daikokuya.co.uk>
2003-02-07 10:31 ` b_adlakha
2003-02-07 18:46 ` Horst von Brand
2003-02-07 21:49 ` Neil Booth
2003-02-10 2:14 ` Jeff Garzik
2003-02-10 9:19 ` Tomas Szepe
[not found] <120432836@toto.iv>
2003-02-05 2:45 ` Peter Chubb
[not found] <200302052021.h15KLrXv000881@darkstar.example.net>
2003-02-05 20:28 ` b_adlakha
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=3E3F8DE6.708@bogonomicon.net \
--to=bryan@bogonomicon.net \
--cc=linux-kernel@vger.kernel.org \
--cc=lse-tech@lists.sourceforge.net \
--cc=mbligh@aracnet.com \
--cc=root@chaos.analogic.com \
--cc=vda@port.imtp.ilyichevsk.odessa.ua \
/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