[Bug libstdc++/54075] [4.7.1] unordered_map insert still slower than 4.6.2
frs.dumont at gmail dot com
gcc-bugzilla@gcc.gnu.org
Thu Nov 8 21:19:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54075
--- Comment #47 from frs.dumont at gmail dot com 2012-11-08 21:19:05 UTC ---
On 11/08/2012 03:25 AM, Paolo Carlini wrote:
> On 11/08/2012 02:56 AM, Paolo Carlini wrote:
>> On the other hand, the old-old code for rehash didn't use
>> _M_growth_factor in these computations, it just literally enforced
>> the post-conditions of the Standard. Are we sure we aren't so to
>> speak rehashing too much? For example, when the load factor is very
>> low and doesn't count, it looks like a current rehash(n) accomplishes
>> the same of an old rehash(n * 2)?!? Something seems wrong, can you
>> double check that? In any case the comments before _M_next_bkt would
>> need fixing.
> ... in other terms, I really think that the only uses of
> _S_growth_factor should return to be inside _M_need_rehash, because
> that's the function called by the inserts, when the container must
> automatically grow the number of buckets. Elsewhere, like the
> constructors, rehash, should not need to know about _S_growth_factor.
>
> Paolo.
>
I haven't yet considered the following emails but based on those
good remarks I have done the attached patch. Surprisingly it seems to
have a good impact on performance even if before it
testsuite/performance/23_containers/insert/unordered_set.cc was showing
that new implementation was better.
I have also starting to adapt tests so that it's possible to check
unordered performance with std or std::tr1 implementations. Can I
generalize it to other tests ? If so, is it a good approach ?
François
More information about the Gcc-bugs
mailing list