re PR libstdc++/54075 ([4.7.1] unordered_map insert still slower than 4.6.2)
2012-11-08 François Dumont <fdumont@gcc.gnu.org> PR libstdc++/54075 * include/bits/hashtable.h (_Hashtable<>::rehash): Reset hash policy state if no rehash. * testsuite/23_containers/unordered_set/modifiers/reserve.cc (test02): New. From-SVN: r193339
This commit is contained in:
parent
68a5598093
commit
ecf07a67d0
@ -1,3 +1,11 @@
|
||||
2012-11-08 François Dumont <fdumont@gcc.gnu.org>
|
||||
|
||||
PR libstdc++/54075
|
||||
* include/bits/hashtable.h (_Hashtable<>::rehash): Reset hash
|
||||
policy state if no rehash.
|
||||
* testsuite/23_containers/unordered_set/modifiers/reserve.cc
|
||||
(test02): New.
|
||||
|
||||
2012-11-08 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* testsuite/23_containers/unordered_multimap/insert/55028-debug.cc:
|
||||
|
@ -1654,6 +1654,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
// level.
|
||||
_M_rehash_policy._M_prev_resize = 0;
|
||||
}
|
||||
else
|
||||
// No rehash, restore previous state to keep a consistent state.
|
||||
_M_rehash_policy._M_reset(__saved_state);
|
||||
}
|
||||
|
||||
template<typename _Key, typename _Value,
|
||||
|
@ -40,8 +40,28 @@ void test01()
|
||||
}
|
||||
}
|
||||
|
||||
void test02()
|
||||
{
|
||||
const int N = 1000;
|
||||
|
||||
typedef std::unordered_set<int> Set;
|
||||
Set s;
|
||||
s.reserve(N);
|
||||
s.reserve(N);
|
||||
|
||||
std::size_t bkts = s.bucket_count();
|
||||
for (int i = 0; i != N; ++i)
|
||||
{
|
||||
s.insert(i);
|
||||
// As long as we insert less than the reserved number of elements we
|
||||
// shouldn't experiment any rehash.
|
||||
VERIFY( s.bucket_count() == bkts );
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
test02();
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user