This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
RE: GCC 3.3 compile speed regression - AN ANSWER
- From: "Rob Taylor" <robt at flyingpig dot com>
- To: "Joe Buck" <jbuck at synopsys dot com>
- Cc: "Mike Stump" <mstump at apple dot com>, "Joel Sherrill" <joel dot sherrill at OARcorp dot com>, "Steven Bosscher" <s dot bosscher at student dot tudelft dot nl>, "Phil Edwards" <phil at jaj dot com>, "Michael S. Zick" <mszick at goquest dot com>, <gcc at gcc dot gnu dot org>
- Date: Wed, 12 Feb 2003 09:55:28 -0000
- Subject: RE: GCC 3.3 compile speed regression - AN ANSWER
On Wed, 12 February 2003, at 02:29, Joe Buck wrote:
> On Tue, Feb 11, 2003 at 11:55:33AM -0000, Rob Taylor wrote:
> > g++ is so incredibly slow - observe:
> >
> > hellow.cpp:
> > #include <iostream>
> >
> > int main()
> > {
> > std::cout << "Hello, world!\n";
> > }
> >
>
> Congrats, you just timed the compiler, the assembler, and the linker,
> not just the compiler. The compiler is too slow, but if you want to time
> just the compiler you need to write
>
> time g++-3.1 -S hellow.cpp
ok, my bad, for the current purposes.
(NB - any chance of documenting -time? - it isn't in Option Summary)
(also, before i start, can anyone tell me whether pch works for c++ yet? if
so i'll repeat all these tests on mainline with pch on)
more detail:
robt@hal:~$ g++-3.1 -time hellow.cpp
# cc1plus 1.40 0.06
# as 0.00 0.01
# collect2 0.19 0.02
robt@hal:~$ time g++-3.1 -S hellow.cpp -o hellow.cpp.s
real 0m1.577s
user 0m1.490s
sys 0m0.090s
robt@hal:~$
I did some quick comparisons with the functionally equivalent
#include <stdio.h>
main()
{
printf ("Hello World!\n");
}
as to what time gets spent in as and ld (just looking at user cpu secs as
are dominant factor)-
(avtime times 20 executions of command and avarages results)
robt@hal:~$ ./avtime.sh g++-3.1 -S hellow.cpp -o hellow.cpp.i
1.41667
robt@hal:~$ ./avtime.sh g++-3.1 hellow.cpp -o hellow.cpp.o
1.64
robt@hal:~$ ./avtime.sh g++-3.1 -S hellow.c -o hellow.c.i
0.06
robt@hal:~$ ./avtime.sh g++-3.1 hellow.c -o hellow.c.o
0.25
even though gcc generates nearly 10 times as much asm for the cpp case, the
total time spent in as+ld is pretty much constant.
the same timings on some production c++ using qt (not including ld)
~/avtime.sh
g++-3.1 -g -DfDEBUG -DfTRACES_ON -DCOMPILE_DEBUG -DLINUX -fsigned-char -D_IS
OC99_SOURCE -DUNICODE -fexceptions -fmessage-length=0 -Wall -W -Wno-reorder
-Wno-unknown-pragmas -Wno-unused -Wno-non-template-friend -fPIC -DAUTOTEST_O
N -DLANGUAGE_SUPPORT_ON -DQT_DLL -I$GUT_DIR/components -I$QTDIR/include -c
autopalette_window.cpp -o autopalette_window.cpp.o
21.5467
devel@hal:~/gut/components/gui_windows$ ~/avtime.sh
g++-3.1 -g -DfDEBUG -DfTRACES_ON -DCOMPILE_DEBUG -DLINUX -fsigned-char -D_IS
OC99_SOURCE -DUNICODE -fexceptions -fmessage-length=0 -Wall -W -Wno-reorder
-Wno-unknown-pragmas -Wno-unused -Wno-non-template-friend -fPIC -DAUTOTEST_O
N -DLANGUAGE_SUPPORT_ON -DQT_DLL -I$GUT_DIR/components -I$QTDIR/include -S
autopalette_window.cpp -o autopalette_window.cpp.s
19.7133
so thats a couple of seconds spent in gas for approx 4.6 meg of assembler.
I'm thinking that perhaps the best development solution would probably be a
speed branch, with a dedicated machine performing nightly timings on a
number of suitable test cases. I may be able to dedicate some
(machine+devel) time to such a thing.
Rob Taylor