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.