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: r193335
This commit is contained in:
parent
d553cd79e4
commit
52d25137ac
|
@ -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 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
* include/profile/iterator_tracker.h (operator++): Fix returning
|
||||
|
|
|
@ -1597,6 +1597,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