Performance regression with libstdc++-v3

Reichelt reichelt@igpm.rwth-aachen.de
Wed May 16 06:05:00 GMT 2001


Hello!

I'm experiencing quite a performance problem with lists under libstdc++-v3.
Consider the following simple program:

#include <list>

int main ()
{
    std::list<int> List;
    for ( int i=0; i<10000000; ++i )
        List.push_back( int() );
    return 0;
}

Compiled with different versions of g++ (-O3 -funroll-loops -static)
I get the following timings (on an i686 system, but it looks similar
on an IRIX6.5 workstation):

* old libstdc++:
- gcc 2.95.2:
  2,51s user   1,01s system   3,516 total
- gcc 20001106:
  2,36s user   1,08s system   3,420 total
* new libstdc++-v3:
- gcc 20001113:
  4,58s user   1,13s system   5,702 total
- gcc 20010507:
  4,69s user   1,06s system   5,749 total

This is a regression in performance of about 65% that came with the
introduction of libstdc++-v3! (I also tested several snapshots between
December 2000 and May 2001, but the results are the same. Compiling
with "-fno-exceptions" doesn't help either.)

That leads to a couple of questions:
* Is that a known problem?
* Any ideas what causes this performance breakdown
  (maybe some debugging code, or is it a problem of the optimizer)?
* Are there any compiler options that I can use to increase performance?
* Can somebody improve speed again, *please*?

Greetings,
Volker Reichelt

 ------------------------------------------------------------------------------

   email: reichelt@igpm.rwth-aachen.de
   http://www.igpm.rwth-aachen.de/reichelt

 ------------------------------------------------------------------------------




More information about the Libstdc++ mailing list