This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]