This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: 3.3 compile time regression (22400%)
- From: Karel Gardas <kgardas at objectsecurity dot com>
- To: Richard Guenther <rguenth at tat dot physik dot uni-tuebingen dot de>
- Cc: Michael Matz <matz at suse dot de>, <gcc at gcc dot gnu dot org>
- Date: Tue, 18 Mar 2003 16:07:59 +0100 (CET)
- Subject: Re: 3.3 compile time regression (22400%)
On Tue, 18 Mar 2003, Karel Gardas wrote:
> Please wait a moment, I've just found that I have deleted all gcc3.3/3.4
> builds. I'm building right now...
>
Here are results:
thinkpad:~/arch/devel/gcc33-expand-test/orb$ c++ -v
Reading specs from
/home/karel/usr/local/gcc3.3.x/lib/gcc-lib/i686-pc-linux-gnu/3.3/specs
Configured with: /home/karel/cvs/gcc/gcc-3_3-branch/configure
--prefix=/home/karel/usr/local/gcc3.3.x --enable-shared --enable-threads
--enable-languages=c++ --disable-checking --enable-__cxa_atexit
Thread model: posix
gcc version 3.3 20030318 (prerelease)
thinkpad:~/arch/devel/gcc33-expand-test/orb$
thinkpad:~/arch/devel/gcc33-expand-test/orb$ time c++ -ftime-report
-I../include -O2 -Wall -fpermissive -DPIC -fPIC -c
security/csiv2_impl.cc -o security/csiv2_impl.pic.o
Execution times (seconds)
garbage collection : 7.79 ( 1%) usr 0.17 ( 2%) sys 9.50 ( 1%) wall
cfg construction : 2.61 ( 0%) usr 0.12 ( 1%) sys 3.00 ( 0%) wall
cfg cleanup : 25.80 ( 3%) usr 0.06 ( 1%) sys 27.38 ( 2%) wall
trivially dead code : 1.84 ( 0%) usr 0.02 ( 0%) sys 2.00 ( 0%) wall
life analysis : 2.25 ( 0%) usr 0.13 ( 1%) sys 2.12 ( 0%) wall
life info update : 1.02 ( 0%) usr 0.06 ( 1%) sys 1.25 ( 0%) wall
preprocessing : 0.37 ( 0%) usr 0.11 ( 1%) sys 1.25 ( 0%) wall
lexical analysis : 0.42 ( 0%) usr 0.13 ( 1%) sys 0.12 ( 0%) wall
parser : 11.90 ( 1%) usr 0.51 ( 5%) sys 11.38 ( 1%) wall
name lookup : 3.15 ( 0%) usr 0.47 ( 5%) sys 4.12 ( 0%) wall
expand : 919.40 (90%) usr 2.53 (26%) sys 975.88 (87%) wall
varconst : 0.13 ( 0%) usr 0.01 ( 0%) sys 0.00 ( 0%) wall
integration : 1.03 ( 0%) usr 0.01 ( 0%) sys 1.00 ( 0%) wall
jump : 10.39 ( 1%) usr 0.54 ( 6%) sys 23.62 ( 2%) wall
CSE : 5.11 ( 0%) usr 0.11 ( 1%) sys 4.75 ( 0%) wall
global CSE : 4.18 ( 0%) usr 1.03 (11%) sys 14.12 ( 1%) wall
loop analysis : 7.54 ( 1%) usr 3.04 (31%) sys 11.00 ( 1%) wall
CSE 2 : 1.54 ( 0%) usr 0.06 ( 1%) sys 1.75 ( 0%) wall
branch prediction : 1.40 ( 0%) usr 0.06 ( 1%) sys 3.00 ( 0%) wall
flow analysis : 0.52 ( 0%) usr 0.06 ( 1%) sys 0.25 ( 0%) wall
combiner : 1.28 ( 0%) usr 0.06 ( 1%) sys 2.12 ( 0%) wall
if-conversion : 0.26 ( 0%) usr 0.00 ( 0%) sys 0.50 ( 0%) wall
regmove : 1.11 ( 0%) usr 0.01 ( 0%) sys 1.38 ( 0%) wall
mode switching : 0.19 ( 0%) usr 0.00 ( 0%) sys 0.38 ( 0%) wall
local alloc : 1.71 ( 0%) usr 0.21 ( 2%) sys 1.88 ( 0%) wall
global alloc : 2.82 ( 0%) usr 0.05 ( 1%) sys 2.88 ( 0%) wall
reload CSE regs : 2.37 ( 0%) usr 0.09 ( 1%) sys 2.25 ( 0%) wall
flow 2 : 0.57 ( 0%) usr 0.03 ( 0%) sys 1.50 ( 0%) wall
if-conversion 2 : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.25 ( 0%) wall
peephole 2 : 0.14 ( 0%) usr 0.00 ( 0%) sys 0.38 ( 0%) wall
rename registers : 0.45 ( 0%) usr 0.00 ( 0%) sys 0.38 ( 0%) wall
scheduling 2 : 1.42 ( 0%) usr 0.04 ( 0%) sys 2.00 ( 0%) wall
reorder blocks : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
shorten branches : 0.35 ( 0%) usr 0.00 ( 0%) sys 0.50 ( 0%) wall
final : 0.44 ( 0%) usr 0.01 ( 0%) sys 0.62 ( 0%) wall
symout : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
rest of compilation : 3.77 ( 0%) usr 0.04 ( 0%) sys 4.00 ( 0%) wall
TOTAL :1025.44 9.77 1118.75
real 18m39.924s
user 17m6.210s
sys 0m9.860s
and now with -fno-default-inline
thinkpad:~/arch/devel/gcc33-expand-test/orb$ time c++ -ftime-report
-fno-default-inline -I../include -O2 -Wall -fpermissive -DPIC -fPIC
-c security/csiv2_impl.cc -o security/csiv2_impl.pic.o
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/stl_alloc.h:652:
warning: inline
function `std::allocator<_Alloc>::allocator() [with _Tp = char]' used
but
never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/stl_alloc.h:656:
warning: inline
function `std::allocator<_Alloc>::~allocator() [with _Tp = char]' used
but
never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/stl_alloc.h:656:
warning: inline
function `std::allocator<_Alloc>::~allocator() [with _Tp = char]' used
but
never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/stl_alloc.h:388:
warning: inline
function `static void* std::__default_alloc_template<__threads,
__inst>::allocate(unsigned int) [with bool __threads = true, int __inst
= 0]
' used but never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/stl_alloc.h:429:
warning: inline
function `static void std::__default_alloc_template<__threads,
__inst>::deallocate(void*, unsigned int) [with bool __threads = true,
int
__inst = 0]' used but never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:325:
warning: inline
function `static std::basic_string<_CharT, _Traits, _Alloc>::_Rep&
std::basic_string<_CharT, _Traits, _Alloc>::_S_empty_rep() [with _CharT
=
char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'
used
but never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:355:
warning: inline
function `std::basic_string<_CharT, _Traits, _Alloc>::~basic_string()
[with
_CharT = char, _Traits = std::char_traits<char>, _Alloc =
std::allocator<char>]' used but never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:358:
warning: inline
function `std::basic_string<_CharT, _Traits, _Alloc>&
std::basic_string<_CharT, _Traits, _Alloc>::operator=(const
std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char,
_Traits =
std::char_traits<char>, _Alloc = std::allocator<char>]' used but never
defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:361:
warning: inline
function `std::basic_string<_CharT, _Traits, _Alloc>&
std::basic_string<_CharT, _Traits, _Alloc>::operator=(const _CharT*)
[with
_CharT = char, _Traits = std::char_traits<char>, _Alloc =
std::allocator<char>]' used but never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:411:
warning: inline
function `typename _Alloc::size_type std::basic_string<_CharT, _Traits,
_Alloc>::length() const [with _CharT = char, _Traits =
std::char_traits<char>, _Alloc = std::allocator<char>]' used but never
defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:441:
warning: inline
function `typename _Alloc::reference std::basic_string<_CharT, _Traits,
_Alloc>::operator[](typename _Alloc::size_type) [with _CharT = char,
_Traits
= std::char_traits<char>, _Alloc = std::allocator<char>]' used but
never
defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:471:
warning: inline
function `std::basic_string<_CharT, _Traits, _Alloc>&
std::basic_string<_CharT, _Traits, _Alloc>::operator+=(_CharT) [with
_CharT
= char, _Traits = std::char_traits<char>, _Alloc =
std::allocator<char>]'
used but never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:801:
warning: inline
function `const _CharT* std::basic_string<_CharT, _Traits,
_Alloc>::c_str()
const [with _CharT = char, _Traits = std::char_traits<char>, _Alloc =
std::allocator<char>]' used but never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:911:
warning: inline
function `int std::basic_string<_CharT, _Traits, _Alloc>::compare(const
std::basic_string<_CharT, _Traits, _Alloc>&) const [with _CharT = char,
_Traits = std::char_traits<char>, _Alloc = std::allocator<char>]' used
but
never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:215:
warning: inline
function `_CharT* std::basic_string<_CharT, _Traits,
_Alloc>::_Rep::_M_refcopy() [with _CharT = char, _Traits =
std::char_traits<char>, _Alloc = std::allocator<char>]' used but never
defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_string.h:228:
warning: inline
function `std::basic_string<_CharT, _Traits,
_Alloc>::_Alloc_hider::_Alloc_hider(_CharT*, const _Alloc&) [with
_CharT =
char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'
used
but never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/bits/basic_ios.h:347:
warning: inline
function `_CharT std::basic_ios<_CharT, _Traits>::fill(_CharT) [with
_CharT
= char, _Traits = std::char_traits<char>]' used but never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/ostream:178: warning:
inline
function `std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT,
_Traits>::operator<<(short int) [with _CharT = char, _Traits =
std::char_traits<char>]' used but never defined
/home/karel/usr/local/gcc3.3.x/include/c++/3.3/ostream:189: warning:
inline
function `std::basic_ostream<_CharT, _Traits>&
std::basic_ostream<_CharT,
_Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits =
std::char_traits<char>]' used but never defined
Execution times (seconds)
garbage collection : 1.45 ( 4%) usr 0.00 ( 0%) sys 1.62 ( 4%) wall
cfg construction : 0.55 ( 1%) usr 0.01 ( 1%) sys 0.62 ( 1%) wall
cfg cleanup : 0.43 ( 1%) usr 0.02 ( 1%) sys 0.38 ( 1%) wall
trivially dead code : 0.57 ( 1%) usr 0.01 ( 1%) sys 0.25 ( 1%) wall
life analysis : 1.89 ( 5%) usr 0.00 ( 0%) sys 1.38 ( 3%) wall
life info update : 0.58 ( 1%) usr 0.00 ( 0%) sys 0.50 ( 1%) wall
preprocessing : 0.42 ( 1%) usr 0.06 ( 3%) sys 1.25 ( 3%) wall
lexical analysis : 0.43 ( 1%) usr 0.07 ( 4%) sys 0.50 ( 1%) wall
parser : 12.19 (29%) usr 0.57 (32%) sys 14.12 (32%) wall
name lookup : 3.03 ( 7%) usr 0.52 (30%) sys 2.75 ( 6%) wall
expand : 2.46 ( 6%) usr 0.04 ( 2%) sys 3.12 ( 7%) wall
varconst : 0.15 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
integration : 0.36 ( 1%) usr 0.00 ( 0%) sys 0.25 ( 1%) wall
jump : 0.91 ( 2%) usr 0.09 ( 5%) sys 1.62 ( 4%) wall
CSE : 2.33 ( 6%) usr 0.02 ( 1%) sys 2.38 ( 5%) wall
global CSE : 1.17 ( 3%) usr 0.04 ( 2%) sys 0.75 ( 2%) wall
loop analysis : 0.20 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
CSE 2 : 0.76 ( 2%) usr 0.01 ( 1%) sys 0.88 ( 2%) wall
branch prediction : 0.96 ( 2%) usr 0.01 ( 1%) sys 1.50 ( 3%) wall
flow analysis : 0.11 ( 0%) usr 0.02 ( 1%) sys 0.12 ( 0%) wall
combiner : 0.63 ( 2%) usr 0.00 ( 0%) sys 0.50 ( 1%) wall
if-conversion : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
regmove : 0.27 ( 1%) usr 0.00 ( 0%) sys 0.25 ( 1%) wall
mode switching : 0.17 ( 0%) usr 0.01 ( 1%) sys 0.12 ( 0%) wall
local alloc : 1.03 ( 2%) usr 0.03 ( 2%) sys 0.88 ( 2%) wall
global alloc : 1.89 ( 5%) usr 0.02 ( 1%) sys 1.75 ( 4%) wall
reload CSE regs : 1.33 ( 3%) usr 0.04 ( 2%) sys 1.62 ( 4%) wall
flow 2 : 0.25 ( 1%) usr 0.02 ( 1%) sys 0.75 ( 2%) wall
if-conversion 2 : 0.10 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
peephole 2 : 0.20 ( 0%) usr 0.02 ( 1%) sys 0.50 ( 1%) wall
rename registers : 0.65 ( 2%) usr 0.00 ( 0%) sys 0.50 ( 1%) wall
scheduling 2 : 1.75 ( 4%) usr 0.04 ( 2%) sys 2.25 ( 5%) wall
reorder blocks : 0.04 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
shorten branches : 0.29 ( 1%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
final : 0.81 ( 2%) usr 0.02 ( 1%) sys 0.75 ( 2%) wall
symout : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
rest of compilation : 0.91 ( 2%) usr 0.06 ( 3%) sys 0.50 ( 1%) wall
TOTAL : 41.42 1.76 44.75
real 0m45.857s
user 0m42.460s
sys 0m1.850s
Which is much better IMHO. FYI: gcc3.2.2 looks:
thinkpad:~/arch/devel/gcc33-expand-test/orb$ time c++ -ftime-report
-I../include -O2 -Wall -fpermissive -DPIC -fPIC -c
security/csiv2_impl.cc -o security/csiv2_impl.pic.o
Execution times (seconds)
garbage collection : 7.56 (21%) usr 0.01 ( 1%) sys 8.12 (21%) wall
cfg construction : 0.42 ( 1%) usr 0.00 ( 0%) sys 1.00 ( 3%) wall
cfg cleanup : 0.33 ( 1%) usr 0.00 ( 0%) sys 0.38 ( 1%) wall
life analysis : 0.99 ( 3%) usr 0.02 ( 3%) sys 0.88 ( 2%) wall
life info update : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.25 ( 1%) wall
preprocessing : 0.37 ( 1%) usr 0.10 (14%) sys 0.38 ( 1%) wall
lexical analysis : 0.52 ( 1%) usr 0.18 (25%) sys 1.00 ( 3%) wall
parser : 11.44 (32%) usr 0.27 (38%) sys 11.75 (31%) wall
expand : 2.18 ( 6%) usr 0.02 ( 3%) sys 2.00 ( 5%) wall
varconst : 0.19 ( 1%) usr 0.00 ( 0%) sys 0.62 ( 2%) wall
integration : 0.58 ( 2%) usr 0.02 ( 3%) sys 0.25 ( 1%) wall
jump : 0.43 ( 1%) usr 0.01 ( 1%) sys 0.25 ( 1%) wall
CSE : 3.97 (11%) usr 0.00 ( 0%) sys 3.62 (10%) wall
global CSE : 0.41 ( 1%) usr 0.00 ( 0%) sys 0.50 ( 1%) wall
loop analysis : 0.23 ( 1%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
CSE 2 : 1.44 ( 4%) usr 0.00 ( 0%) sys 1.75 ( 5%) wall
flow analysis : 0.16 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
combiner : 0.43 ( 1%) usr 0.02 ( 3%) sys 0.75 ( 2%) wall
regmove : 0.18 ( 1%) usr 0.00 ( 0%) sys 0.38 ( 1%) wall
mode switching : 0.07 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
local alloc : 0.41 ( 1%) usr 0.00 ( 0%) sys 0.50 ( 1%) wall
global alloc : 0.75 ( 2%) usr 0.01 ( 1%) sys 0.50 ( 1%) wall
reload CSE regs : 0.58 ( 2%) usr 0.00 ( 0%) sys 1.25 ( 3%) wall
flow 2 : 0.13 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
if-conversion 2 : 0.02 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
peephole 2 : 0.11 ( 0%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
rename registers : 0.27 ( 1%) usr 0.00 ( 0%) sys 0.25 ( 1%) wall
scheduling 2 : 0.65 ( 2%) usr 0.04 ( 6%) sys 0.62 ( 2%) wall
reorder blocks : 0.05 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
shorten branches : 0.09 ( 0%) usr 0.00 ( 0%) sys 0.00 ( 0%) wall
final : 0.26 ( 1%) usr 0.00 ( 0%) sys 0.12 ( 0%) wall
symout : 0.00 ( 0%) usr 0.01 ( 1%) sys 0.00 ( 0%) wall
rest of compilation : 0.49 ( 1%) usr 0.00 ( 0%) sys 0.25 ( 1%) wall
TOTAL : 35.90 0.71 37.88
real 0m38.234s
user 0m36.180s
sys 0m0.750s
thinkpad:~/arch/devel/gcc33-expand-test/orb$
thinkpad:~/arch/devel/gcc33-expand-test/orb$ c++ -v
Reading specs from
/home/karel/usr/local/gcc3.2.2/lib/gcc-lib/i686-pc-linux-gnu/3.2.2/specs
Configured with: ../gcc-3_2-branch/configure
--prefix=/home/karel/usr/local/gcc3.2.2 --enable-shared --enable-threads
--enable-languages=c++ --enable-__cxa_atexit
Thread model: posix
gcc version 3.2.2
thinkpad:~/arch/devel/gcc33-expand-test/orb$
Cheers,
Karel
--
Karel Gardas kgardas at objectsecurity dot com
ObjectSecurity Ltd. http://www.objectsecurity.com