http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57885

--- Comment #6 from Jim Hand <jhand at austin dot rr.com> ---
Thanks for the information Francois. That makes a lot of sense for the erase()
case.

For a little more information, I also timed this with three boost
implementations and saw the following times for boost 1.47, 1.49, and 1.53:

$ ./um.b147   
Container:boost::unordered_map<int,int>  Key:int
Insertion: 13589 4581 4581 4593 4577  min=4577 max=13589
Lookup:    10344 10353 10339 10332 10338  min=10332 max=10353

$ ./um.b149   
Container:boost::unordered_map<int,int>  Key:int
Insertion: 16593 7901 7944 7950 7970  min=7901 max=16593
Lookup:    15295 15340 15297 15303 15310  min=15295 max=15340

$ ./um.b153  
Container:boost::unordered_map<int,int>  Key:int
Insertion: 10662 5648 5726 5747 5758  min=5648 max=10662 
Lookup:    14880 14842 14844 14840 14928  min=14840 max=14928

The times are pretty comparable to gcc. Inserts may take about 10 or 11
nanoseconds on our hardware and finds look like they are taking about 5 or 6
nanoseconds. For most applications, including ours, the time spent inserting
and executing find() is miniscule compared to the other time spent by the
application.

If you feel you can improve performance while maintaining conformance with the
standard, please do so. If you feel that the current behavior is fine, we won't
complain (too much).

I also want you to know that the gcc developers all are doing a great job in
supporting the C++ community. I've been using gcc for C/C++ programming for
about 20 years now and have found the gcc compiler suite to be a great product.
My colleagues at work are really excited about moving from gcc-4.6 to 4.8,
mostly for the enhanced C++11 support.

Reply via email to